Androidcheckboxlistview全选(禁用/启用)

我想禁用/启用列表视图中的所有checkbox。 事实上通过点击顶部的checkbox来获得select所有的行为。

谢谢

这是最后为我工作,我正在使用游标适配器,而不仅仅是我的列表项ArrayListAdapter

 final ListView list = getListView(); for ( int i=0; i< getListAdapter().getCount(); i++ ) { list.setItemChecked(i, true); } 

list.getChildCount不起作用,因为它似乎只是计算立即绘制的东西(不是所有的东西都不在屏幕上),所以当整个列表是100或更多的项目时, childCount可能只有6或8个项目。 此外,因为我不得不使用list.setItemChecked获取项目“保持检查” – 至less在我的情况下,我的列表项是CheckedTextView实例。

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

你需要编辑这个代码来处理启用和禁用,但我希望你明白了!

此外,这只会检查每个checkbox,确保您从列表中返回一个id或对象,以便在别处发送/保存数据。

我想你应该从UI线程运行这个长时间运行的任务。 当您单击OnClickListener中的button时:

 new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < list.getAdapter().getCount(); i++) { final int position = i; mHandler.post(new Runnable() { @Override public void run() { list.setItemChecked(pos, true); } }); } } }).start(); 

并在onCreate()中:

 this.mHandler = new Handler(); 

列表视图中的每个项目都应该是CheckableRelativeLayout(可执行Checkable接口)。

只需在适配器中添加一个参数即可

 Boolean Ex.MyAdapter adapter = new Save_Weight_Adapter(this, R.layout.layoutname, array, false); listview.setAdapter(adapter); 

在select所有button点击监听器添加此代码

 MyAdapter adapter = new Save_Weight_Adapter(this, R.layout.layoutname, array, true); listview.setAdapter(adapter); 

并检查adpater

 if(chk) { blue_check.setVisibility(View.VISIBLE); } else { blue_check.setVisibility(View.GONE); }