,你必須創建的十六進制顏色代碼數組,並通過自定義適配器類
public class MainActivity extends Activity {
GridView gridView;
String[] gridColor ={
"#008B8B",
"#00FF00",
"#48D1CC",
"#556B2F",
"#696969",
"#6B8E23",
"#8FBC8F",
"#AFEEEE",
"#B8860B",
"#BDB76B",
"#D8BFD8",
"#DEB887",
"#FFFF00",
"#FFF0F5",
"#EE82EE",
"#DC143C",
"#C0C0C0"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Grid adapter = new Grid(MainActivity.this,gridColor);
gridView=(GridView)findViewById(R.id.grid_view);
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
Toast.makeText(MainActivity.this, "You Clicked On " +gridcolor[+ position], Toast.LENGTH_SHORT).show();
}
});
}
}
在定製適配器代碼會是這樣,其中的顏色代碼將被解析主要活動
public class Grid extends BaseAdapter {
private Context mContext;
private final String[] menu;
private final int[] Imageid;
private final String[] gridcolor;
public Grid(Context context,String[] menu,int[] Imageid,String[] gridcolor)
{
mContext=context;
this.gridcolor=gridcolor;
}
@Override
public int getCount() {
return gridcolor.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_layout, null);
grid.setBackgroundColor(Color.parseColor(gridcolor[i]));
} else
{
grid = view;
}
return grid;
}
}
謝謝。這適用於在創建屏幕時初始化所有單元格。 但我也需要動態訪問和更改單元格。有沒有辦法在運行時引用單個單元格以更改其顏色? –
(對不起,我剛剛找到你的答案。)是的,但是你想突出顯示一個細胞還是與標準相匹配的每個細胞(如每三個細胞或每個失敗的學生)? – Sam
@Mark__C是的,如SDK中建議的覆蓋BaseAdapter。 – dcow