我有一些项目的列表视图。我放置一个复选框来显示该listitem的复选框。我写了onclick方法来检查所有复选框。但是,它会选择列表顶部的项目。有什么问题?谁清楚我?提前致谢。示例代码: -
CheckBox c = (CheckBox)findViewById(R.id.checkBox1);
if (c.isChecked())
{
c.setChecked(false);
}
else
{
c.setChecked(true);
}
答案 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
答案 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);
}
点击活动后尝试此操作。