Checkbox在ListView中无法正常工作?

时间:2011-08-24 06:22:58

标签: java android android-listview

我有一些项目的列表视图。我放置一个复选框来显示该listitem的复选框。我写了onclick方法来检查所有复选框。但是,它会选择列表顶部的项目。有什么问题?谁清楚我?提前致谢。示例代码: -

CheckBox c = (CheckBox)findViewById(R.id.checkBox1);
            if (c.isChecked())
            { 
                c.setChecked(false);
            }
            else 
            { 
                c.setChecked(true);
            }

3 个答案:

答案 0 :(得分:0)

private OnClickListener checkAllCheckboxes = new OnClickListener(){
    public void onClick(View v) {
        ListView lv = getListView();
        int size = getListAdapter().getCount();
        boolean check = lv.isItemChecked(0);
    for(int i = 0; i <= size; i++)
        lv.setItemChecked(i, !check);

        }
    }


OR

for(int i=0; i < listView.getChildCount(); i++){
RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i);
CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox);
cb.setChecked(true);


android-unable-to-check-all-the-checkboxes-in-a-custom-listview-because-of-recy

Example2

答案 1 :(得分:0)

使用该片段很难指出问题。

一,listview重用视图,也许在滚动相同视图的同时出现在其他位置。

这是一个教程http://www.marvinlabs.com/2010/10/custom-listview-ability-check-items/ 看看这个。或发布其他代码。特别是,适配器代码中的getView

答案 2 :(得分:0)

之所以发生这种情况,是因为在调用Adapter视图时它会在列表视图时执行。

所以在你点击复选框(true)之后,同样数量的下面的屏幕将是真的。因为你必须维护Vector。

if(tempVector.get(position)){
            holder.box.setChecked(true);
        }
        else{
            holder.box.setChecked(false);
        } 

点击活动后尝试此操作。