复选框状态不正常

时间:2016-10-27 11:04:20

标签: android checkbox

我正在使用带有复选框的compose。单击复选框并滚动后,复选框状态无法正常工作。

我试过看一下类似的StackOverflow question 但是这些解决方案对我不起作用。

这是我的ListView代码:

Adapter

感谢。

1 个答案:

答案 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;
}