带复选框的自定义列表视图,选择其他不可见的子元素

时间:2013-09-14 12:03:53

标签: android listview select checkbox

我有自定义列表视图和自定义数组适配器。我正在使用列表视图进行多行选择。但是,当我选择可见子项的行,并向上/向下滚动列表视图时,也会选择显示它们的其他子项。

@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;
    }

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

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

为什么不使用带有ListView布局的内置Checkboxandroid.R.layout.simple_list_item_multiple_choice将为您效劳。

答案 1 :(得分:0)

它是赋值函数中的一部分。您还必须在其中指定复选框。如果这不足以作为答案plz修改你的问题并包括赋值值功能代码。我会修改它。

当convertView不为null时会发生这种情况。它会让你得到一个二手的观点。这就是这个方法如何工作“getView”。因此,每当convertView不为null时,您必须修改每个ui元素。

答案 2 :(得分:0)

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

Vogella List View