我认为,如果你想要某种选择提示,你需要一个可聚焦的对象。然而,如果使用可聚焦的对象(如按钮)将OnItemClickListener附加到GridView上是不起作用的(如果我没记错的话)。相反,你必须在适配器的getView()方法中为每个项目单独附加OnClickListener。
适配器:
public View getView(int position, View convertView, ViewGroup parent) {
Button button;
if (convertView == null) {
button = new Button(mContext);
}
else {
button = (Button) convertView;
}
button.setBackgroundResource(mThumbIds[position]);
button.setOnClickListener(new OnClickListener() {
onClick(View v) {
SharedPreferences settings = getSharedPreferences("MY_PREFERENCE", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("button_id", mThumbIds[position]);
editor.commit();
}
});
return button;
}
}
在Activity端,保存按钮的 onClickListener:
onClick(View v) {
SharedPreferences settings = getSharedPreferences("MY_PREFERENCE", 0);
int id = settings.getInt("button_id", -1);
}
可能会有一些细节缺失,因为按钮是可聚焦的,但我认为应该可以解决这个问题。此外,您将通过使用.xml定义的选择器资源实现选择。然而,这应该在一个单独的问题中解决。
编辑1:
实际上,现在我想起来了,我不确定可绘制的.xml文件(选择器)是否可以有ID。我得回家后再试试。
编辑2:
我添加了sharedPreference部分。
编辑3:
添加了从活动端查询sharedPreference。
OnClickListener
并不是真正可行的,对吗?这可能是一个解决方案,所以如果你愿意,你可以在下面给出一个合适的答案。我不介意。 - rfgamaral