我正在使用带有复选框的compose
。单击复选框并滚动后,复选框状态无法正常工作。
我试过看一下类似的StackOverflow question 但是这些解决方案对我不起作用。
这是我的ListView
代码:
Adapter
感谢。
答案 0 :(得分:2)
在适配器中实现getView
方法的基本规则是,只有在没有视图重新使用时才会使视图膨胀,但每次调用getView时都会更新所有视图。
您未在案例Checkbox
中设置convertView == null
属性。 CheckBox
有一个OnCheckedChangeListener
可用于识别状态更改,而非处理对其的点击。
将getView
方法更改为:
@Override
public View getView(final int i, View convertView, ViewGroup viewGroup) {
View view = convertView;
if (view == null) {
view = mInflater.inflate(R.layout.event_item_list, null);
ViewHolder holder = new ViewHolder();
holder.myCheckBoxCustomerEventItem = (CheckBox) view.findViewById(R.id.checkBoxCustomerEventItem);
holder.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
myEventArrayList.get(i).setMyIsSelected(isChecked);
}
});
view.setTag(holder);
}
ViewHolder holder = (ViewHolder) view.getTag();
Events eventsInfo = myEventArrayList.get(i);
boolean isChecked = eventsInfo.getMyIsSelected();
holder.myCheckBoxCustomerEventItem.setChecked(isChecked);
return view;
}