1
在Android中,我有一個GridView - GridView中的每個單元格都是一個ImageView。當用戶點擊一個單元格時,我希望該單元格被「選中」(將其背景變成藍色),並且將所有其他單元格「取消選擇」(將其背景變爲白色)。如何確保更改所選GridView單元格的背景?
我已實現了以下背景繪製,但只在按下小區改變背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/iconborder_selected" /> <!-- pressed -->
<item android:drawable="@drawable/iconborder_unselected" /> <!-- default -->
</selector>
編輯:這裏是我的GridView的適配器代碼。
class IconAdapter extends BaseAdapter {
private Context context = null;
private List<Drawable> icons = new ArrayList<Drawable>();
public IconAdapter(Context context) {
this.context = context;
for (Field f : R.drawable.class.getFields()) {
String path = f.getName();
if (path.contains("icon_")) {
int id = context.getResources().getIdentifier(path, "drawable",
context.getPackageName());
Drawable drawable = context.getResources().getDrawable(id);
icons.add(drawable);
}
}
}
@Override
public int getCount() {
return icons.size();
}
@Override
public Object getItem(int position) {
return icons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(context);
iv.setImageDrawable(icons.get(position));
iv.setBackgroundResource(R.drawable.iconborder);
return iv;
}
}
這對我來說似乎沒有任何作用。我將追加我的適配器到原始發佈 - 也許有什麼問題,我如何創建一個視圖? – sdasdadas 2013-05-12 20:47:12
嘗試在默認項目中顯式添加'state_pressed =「false」'。根據我的經驗,上面的代碼可以工作。 – 2013-05-13 14:26:38