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