我正在开发一个Android应用程序,其中有一个带有文本视图的自定义列表视图,并且有复选框。在此列表视图中,将显示移动设备的联系人列表,现在我需要添加一个全选复选框,当选中时,需要选中所有复选框。我为此编写了代码但是当我选择select all的复选框时...当前查看的联系人正在选择并且底部scrollview中的联系人未被选中。我正在提供以下代码,请检查并帮助我进行更改。
lv = (ListView) findViewById(R.id.contactsView);
ma = new MyAdapter();
lv.setAdapter(ma);
lv.setOnItemClickListener(this);
lv.setItemsCanFocus(false);
lv.setTextFilterEnabled(true);
switch(view.getId()) {
case R.id.chkSelectAll:
if (checked)
{
Toast.makeText(MyList.this, "Checked.", Toast.LENGTH_LONG).show();
for(int i=0; i<lv.getChildCount();i++)
{
CheckBox cb = (CheckBox)lv.getChildAt(i).findViewById(R.id.selected);
cb.setChecked(true);
}
}
else
{
Toast.makeText(MyList.this, "Not Checked.this time", Toast.LENGTH_LONG).show();
for(int i=0; i<lv.getChildCount();i++)
{
CheckBox cb = (CheckBox)lv.getChildAt(i).findViewById(R.id.selected);
cb.setChecked(false);
}
}
break;
}
}
答案 0 :(得分:0)
尝试这种方式,这正是您所寻找的
date_sub
有关详情,请参阅此http://wptrafficanalyzer.in/blog/implementing-checkall-and-uncheckall-for-a-listview-in-android/
http://aboutyusata.blogspot.in/2013/11/how-to-make-listview-with-checkbox-in.html
答案 1 :(得分:0)
您无法通过“getChildAt(i)”检查复选框,因为ListView仅呈现屏幕上的行。
您需要让适配器完成工作:
在MyAdapter中添加如下内容:
public void selectAll() {
for (Contact c : this.contacts) {
c.setSelected(true);
}
this.notifyDataSetChanged();
}
我现在不知道你的数据模型是如何构建的,但我希望这会给你正确的方向。