0

我有一个带有自定义数组适配器的自定义列表视图。我正在使用列表视图进行多行选择。但是,当我选择可见子项的行并向上/向下滚动列表视图时,其他出现的子项也会被选中。

@Override
    public View getView(final int position,  View convertView, ViewGroup parent) {

        LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if(convertView == null)
            convertView = layoutInflater.inflate(R.layout.addbill_row,parent,false);

        initUI(convertView);

        assignValues(position);

        cbAddBillSelected.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub

                if(isChecked)
                {
                    Data.arrlstSelectedUsers.get(position).isChecked = true;



                }
                else
                {
                    Data.arrlstSelectedUsers.get(position).isChecked = false;


                }


            }
        });


        return convertView;
    }

还附上屏幕截图。不知道为什么会发生这种情况,我通过将所选项目保存在共享首选项中来解决另一个问题,但它是一个长期的解决方案。寻找更好的解决方案。

在此处输入图像描述

在此处输入图像描述

4

3 回答 3

0

ListView为什么不使用内置Checkbox布局?android.R.layout.simple_list_item_multiple_choice会为你工作。

于 2013-09-14T12:11:08.200 回答
0

它是赋值函数中的东西。您还必须指定其中的复选框。如果这还不足以作为答案,请修改您的问题并在其中包含分配值功能代码。我会修改它。

当 convertView 不为空时会发生这种情况。它为您提供使用过的视图。这就是这种方法“getView”的工作方式。因此,每次 convertView 不为空时,您都必须修改每个 ui 元素。

于 2013-09-14T12:17:57.097 回答
0

遵循 Vogella 列表视图教程,它就像一个魅力。使用标签。

Vogella 列表视图

于 2013-09-14T13:16:53.257 回答