Я пытаюсь сделать gmail-like listview. То есть, изначально listview находится в режиме одиночного выбора, но при выборе checkbok он становится многократным.ListView множественный выбор с настраиваемым макетом
это то, что я до сих пор:
SimpleCursorAdapter dataSource = new SimpleCursorAdapter(this, R.layout.listitem, cursor,
new String[]{"_id","a","b","c","d","e","f","g","h"},
new int[] { R.id.checkBox1, R.id.a, R.id.b, R.id.c, R.id.d, R.id.e}
// all of these are a part of my list item custom layout.
);
dataSource.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View aView, final Cursor c, int i) {
String s=c.getString(i);
String toset="";
TextView tv = i==0?null: (TextView) aView;
if (i==0){
if(chkL==null){
chkL=new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton cb1, boolean isChecked) {
CheckBox cb=(CheckBox) cb1;
chkid[c.getPosition()]=isChecked;
if(lv.getChoiceMode()!=lv.CHOICE_MODE_MULTIPLE){
lv.setChoiceMode(lv.CHOICE_MODE_MULTIPLE);
}
lv.setItemChecked(c.getPosition()+1,isChecked);
log(isChecked+" selected "+(c.getPosition()+1));
}
};
}
CheckBox cb= (CheckBox) aView;
cb.setOnCheckedChangeListener(chkL);
return (i==0);
}};
В настоящее время я пытаюсь по крайней мере, сделать пункт «выбран», нажав на кнопку напротив него. Я использую c.getPosition()+1
(позиция курсора), чтобы получить позицию элемента списка. но это всегда возвращает 1
, а иногда и случайные значения.
обновление: Похоже, он всегда возвращает 1, но когда я перебирать getCheckedItemPositions(), я вижу, что пункт нет. 10 выбран. Нажмите еще один флажок, снова позиция курсора будет 1, но элемент № 11 будет выбран и так далее. Но если я выхожу за пределы флажка, выбирается правильный элемент.
Кроме того, при выборе одного флажка, если вы прокрутите вниз, вы увидите, что проверено несколько других флажков. (У меня около 255 элементов в списке). Я думаю, что это связано с тем, как андроид снова использовал те же флажки?
Я думаю, что вы ищете является ExpandableListView , http://stackoverflow.com/questions/3483690/expandablelistview-sample-from-google –