Я добавил в свой список только флажки.
list_checkbox.xml: <?xml version="1.0" encoding="utf-8"?>
<CheckBox
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="42px">
</CheckBox>
В java; для захвата события в списке я использовал это:
items1={" "," "," "," "}; //blank i.e. no text near checkbox
lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.list_checkbox, items1));
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
// When clicked,put code here.....
}
});
, но теперь, где и как захватить событие флажка?
подробно plz.
Я новичок.
спасибо..
Если вы введете в ListView либо сфокусируемое, либо кликаемое представление, то ваш OnItemClickListener не будет вызван. Флажок установлен по умолчанию, поэтому установка OnItemClickListener в этом случае ничего не сделает.
Что вы можете сделать в этом случае - это реализовать пользовательский адаптер (просто расширить ArrayAdapter) и добавить OnClickListener для каждого представления, которое вы предоставляете для ListView.
public class TestAdapter extends ArrayAdapter {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Do your logic here eg. if ((CheckBox)v).isChecked()...
}
});
return v;
}
}
Вы можете найти очень хорошее руководство по этому разделу здесь. Стоит прочитать всю главу, но ответ на ваш вопрос приведен на стр. 112 "Интерактивные строки".
Также просмотрите этот вопрос о переполнении стека.