我使用複選框和兩行文本創建了自定義列表視圖。我想在點擊列表項時改變複選框狀態(這意味着如果我點擊列表項的任何部分複選框或文本,複選框將改變狀態)。 要做到這一點我已經在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 –