有没有办法检查gridview
中的元素?
我找不到 toggle()
方法或 setChecked(true)
,我的 gridview
有一个扩展 BaseAdapter 的适配器,我想当检查元素时(不仅仅是选择)更改背景颜色。
我会喜欢ListView:GridView.setChoicheMode(MULTICHOICE)
,然后item.toggle()
或item.setChecked(true)
并将检查状态存储到 View 中。
编辑:
我添加了一个空的CheckedTextView
来存储检查状态。
但是有没有更干净的方法来做到这一点?
编辑2 现在我可以做我想做的事情,但是当我向下滚动 gridview 然后向上滚动时,所选项目不再被选中。
boolean checked = layout.getCheckedItemPositions().get(position);
if(checked){
check.toggle();
view.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
else{
check.toggle();
view.setBackgroundColor(getResources().getColor(android.R.color.holo_green_light));
}
其中layout是gridview的布局。 我想我必须修改我的适配器的 getView 方法,但此代码不起作用:
CheckedTextView check = (CheckedTextView) layout.findViewById(R.id.txv_grid_check);
boolean checked = check.isChecked();
if(checked){
layout.setBackgroundColor(c.getResources().getColor(android.R.color.holo_green_light));
}
else{
layout.setBackgroundColor(c.getResources().getColor(android.R.color.transparent));
}
编辑3
我认为无法执行我想要的操作(将状态存储在 CheckedTextView 元素中),因为滚动列表或 GridView 时 View 会被销毁并重新创建。所以我需要将项目的状态处理到适配器中。我使用 int 的 HashSet 来存储选中项的位置,并创建了一些公共(public)方法来从 gridview 处理此列表。 在 gridview Activity 中,可以获取适配器,然后执行 myadapter.check(intposition) 或 uncheck(intposition)。 然后在适配器中的 getView() 方法中,我们需要检查某个位置是否在列表中并设置适当的背景颜色。
最佳答案
我希望这个answer会帮助你。在此示例中,网格项布局中有 TextView,您可以将其更改为 CheckedTextView 或 Checkbox。在 getView() 中检查状态并设置网格项目的背景颜色。
关于Android:如何设置在gridview中选中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134914/