Android:如何设置在gridview中选中的项目?

标签 android gridview

有没有办法检查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/

相关文章:

java - AlertDialog 不工作,在 if 条件语句期间

c# - Gridview 排序后自动选择第一行

c# - 更改页面后gridview消失

android - 创建新项目时没有构建目标

android - Flutter - 将 lib Flutter 添加到 Android 项目

android - 如果高度为 WRAP_CONTENT,则 VideoView 不可见

Java : implementing a template interface several time (with different class parameter)

android - Android GridView 中图像之间的空间

php - 使用 Html 链接自定义 CButtonColumn

c# - ASP.NET GridView.DataBind 不刷新 GridView