Я создал пользовательское listview с флажком и двумя строками текста. Я хочу изменить состояние флажка, когда я нажимаю на элемент списка (это означает, что если я нажмю любую часть элемента списка или текст, флажок изменит состояние). Для достижения этой цели я добавил это в файле custom_list_row XML:Элемент списка Listview не выбран, когда прокрутка вниз
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants" >
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="false" />
и в классе Java я сделал это:
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final CheckBox checkBox;
checkBox = (CheckBox)view.findViewById(R.id.checkbox);
if(checkBox.isChecked()){
checkBox.setChecked(false);
}
else {
checkBox.setChecked(true);
}
}
});
Это прекрасно работает. Но единственная проблема заключается в том, что когда я выбираю некоторые элементы и прокручиваю вниз -> вернуться к выбранным элементам -> выбранные элементы становятся не выбраны.
Я ничего не делал с setOnCheckedChangeListener
Что пошло не так? Любое предложение решить эту проблему будет полезно.
Благодаря
вам нужно поддерживать булевский массив для этого –
, вы имели в виду, что мне нужно создать массив, который сохранит состояние всех флажков? – supertramp
да, но попытайтесь использовать recyclerview –