У меня есть SimpleCursorAdapter
с ImageView
и TextView
. Он работает так, как есть. Я пытаюсь добавить CheckBox
в моем listview
, когда я нажимаю на checkbox
Я хочу, чтобы строка списка удалялась из базы данных.Любой хороший пример для флажка с SimpleCursorAdapter
Его трудно найти в этом примере, если у вас есть пример для моей ситуации.
Main.class
public void forGeneral(){
c = m.fetchAllReminders();
String[] from = new String[]{Database.KEY_FIRST, Database.KEY_LAST};
int[] to = new int[]{R.id.tFirst, R.id.tSecond};
r2 = new ImageV(getActivity().getApplicationContext(), R.layout.forcheckbox, c, from, to);
h = r2.getItemId(c.getPosition());
r2.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View arg0, Cursor arg1, final int arg2) {
// TODO Auto-generated method stub
if(arg0.getId() == R.id.cbCheckk){
final CheckBox cb1 = (CheckBox) arg0.findViewById(R.id.cbCheckk) ;
cb1.setTag(arg2);
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(
CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
}
});
}
return false;
}
});
setListAdapter(r2);
}
ImageV.class
public class ImageV extends SimpleCursorAdapter{
private Cursor cn;
private Context context;
private ViewHolder holder = null;
private Layout mlayout;
private ArrayList<String> list = new ArrayList<String>();
private ArrayList<Boolean> itemChecked = new ArrayList<Boolean>();
private int i;
public ImageV(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.cn= c;
this.context = context;
for(int i = 0; i < this.getCount(); i++){
itemChecked.add(i, false);
}
}
private class ViewHolder{
TextView mFirst;
TextView mLast;
CheckBox mCheckBox;
ListView lv;
}
public View getView (final int pos, View inView, ViewGroup parent){
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(inView == null){
inView = mInflater.inflate(R.layout.forcheckbox, null);
holder = new ViewHolder();
holder.mFirst = (TextView) inView.findViewById(R.id.tFirst);
holder.mLast = (TextView) inView.findViewById(R.id.tSecond);
holder.mCheckBox = (CheckBox) inView.findViewById(R.id.cbCheckk);
inView.setTag(holder);
}else {
holder = (ViewHolder) inView.getTag();
}
this.cn.moveToPosition(pos);
String first = c.getString(c.getColumnIndex(Database.KEY_FIRST));
String last = c.getString(c.getColumnIndex(Database.KEY_LAST));
holder.mFirst.setText(first);
holder.mLast.setText(last);
holder.mCheckBox.setTag(pos);
holder.mCheckBox.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v.findViewById(R.id.cbCheckk);
if(cb.isChecked()){
itemChecked.set(pos, true);
Toast.makeText(getApplicationContext(), "Yes", Toast.LENGTH_LONG).show();
long u = c.getLong(i);
m.deleteReminder(u);
cb.setChecked(false);
c.requery();
}
}
});
return (inView);
}
вы хотите строки удалить, как только элемент проверяется или сначала вы хотите выбрать несколько элементов в список, а затем удалить их? если вы хотите первый вариант, я предлагаю вместо использования «CheckBox» вы должны использовать кнопку «Button». – SMR
хорошо я хочу реализовать флажок для эстетической цели. Любой хороший пример? Мой вопрос был отредактирован с кодом, который у меня есть. –
неправильный .. Может быть, похоже, что он работает, но реализация должна включать newView & bindView вместо getView (который будет неявно вызван) – Ewoks