0
我有一個ListView
其中每個ListItem
都有一個CheckBox
它的佈局。當一個CheckBox
被激活並滾動出可視區域時,它將被取消激活。據我所知ListView
重複使用Views
,我必須在我的getView()
方法中保存CheckBoxes
的狀態,但我在那裏有兩個問題。ListView中的複選框在滾動時取消激活
我有一個ListView
其中每個ListItem
都有一個CheckBox
它的佈局。當一個CheckBox
被激活並滾動出可視區域時,它將被取消激活。據我所知ListView
重複使用Views
,我必須在我的getView()
方法中保存CheckBoxes
的狀態,但我在那裏有兩個問題。ListView中的複選框在滾動時取消激活
您正試圖在字符串上調用setSelected。您需要在複選框上調用它。變量「list」是一個String的ArrayList。
在這兩種情況下,您都試圖調用字符串類型的複選框方法。你需要在你的複選框上打電話給他們。
**編輯
你需要在getView做的是以下幾點:
基本上,你的代碼應該是這樣的:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.listitem, parent, false);
} else {
//you should change viewHolder to simply store a boolean, rather than the entire checkbox. It should just store whether or not the checkbox was checked.
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.listcontent);
viewHolder.isChecked = ((CheckBox) convertView.findViewById(R.id.cb)).isChecked();
//do whatever else here
}
return convertView;
}
好吧,我想這是越來越在列表中的位置,然後,如果它的選擇檢查。我現在做了你所建議的改變,但是調用checkBox會拋出錯誤「checkBox無法解析」。 「checkBox.get(爲getPosition).setSelected(buttonView.isChecked());」。它也不適用於前綴viewHolder。 – user1617102
複選框不是一個可訪問的變量,它是ViewHolder類中的成員。 –
你的代碼有問題。當我滾動時,它會隨機激活/取消激活離開可見區域的複選框。 – user1617102