我构建了一个 GridView
,由 RelativeLayouts
的 Adapter
填充,其中包含顶级 ImageView
。 ImageView
直到用户点击该项目才会显示,从而为单个 View
创建“selected”效果。当用户点击不同的项目时,我会在先前选择的 View
上隐藏所选项目。
这工作正常,但我很好奇是否有更原生的 Android 方式来处理这种情况。我没有看到任何类型的 setSelected()
(ish)方法,但也许我忽略了什么?
最佳答案
View
的任何子类都应该有一个setSelected()
方法,其中包括RelativeLayout
。您应该在适配器中跟踪所选位置,然后在您的 getView()
方法中:
myRelativeLayout.setSelected(selectedPosition == position);
如果您使用处理 state_selected
的选择器,这将起作用。对于您的方法,您可以说:
myImageView.setVisibility(selectedPos == pos ? View.VISIBLE : View.INVISIBLE);
当您注册点击时(在您的OnItemSelectedListener
或OnItemClickListener
中,或者您正在使用的任何内容)只需调用适配器的setSelectedPosition()
方法,然后调用适配器的 notifyDatasetChanged()
方法。
关于android - 是否有更多 "Android"方法让我的项目在 GridView 中保持 "Selected"状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168944/