我有一个列表视图,其中包含大量项目。 现在我有一个共同的按钮“全选”,点击该按钮应该对列表中的每个项目进行一些操作。
我看到了覆盖onscrollchanged的答案。但我不希望用户做滚动。没有它本身应该选择所有项目。
目前我正在使用listview.getcount进行迭代,但此更新仅适用于当前视图组。
答案 0 :(得分:4)
我认为您拥有自定义BaseAdapter
并且已覆盖的getView(..)
方法会根据其状态(已选中/未选中)刷新每个视图。如果是这样,那么你只需要对这个ListAdapter
的基础数据进行更改(假设,迭代存储由此列表表示的对象并更改每个对象的某些属性的数组),然后调用{ {3}}方法。
答案 1 :(得分:2)
什么对我有用:
private void enableAllListItems() {
for(int i=0;i<mCursorAdapter.getCount();i++)
mCheckedPositions.set(i, true);
mListView.invalidateViews();
}
导入部分是“invalidateViews()”,因为你必须说ListView它的底层数据发生了变化!
但我实际上是在使用自己的适配器,所以我覆盖了getView() - Method。我不确定它是否适用于标准适配器。
答案 2 :(得分:1)
您使用用于填充列表的通用列表对其进行迭代。那会对你有所帮助。
答案 3 :(得分:0)
试试这个。
private void SelectAll() {
// TODO Auto-generated method stub
int count = this.mainListView.getAdapter().getCount();
for (int i = 0; i < count; i++) {
this.mainListView.setItemChecked(i, true);
}
}