我想为每个gridview项目设置不同的背景颜色,我试过这样的
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.places_gridview);
prepareList();
mAdapter = new PlacesGridViewAdapter(this, listTitle, listIcon);
gridview = (GridView) findViewById(R.id.gridView);
gridview.setAdapter(mAdapter);
}
public void prepareList() {
listTitle = new ArrayList<String>();
listTitle.add("Hotel");
listTitle.add("Taxi");
listTitle.add("Cafe");
listTitle.add("Train");
listTitle.add("School");
listTitle.add("Parlor");
listTitle.add("Gas");
listTitle.add("Fire");
listIcon = new ArrayList<Integer>();
listIcon.add(R.drawable.hotel);
listIcon.add(R.drawable.taxi_meter);
listIcon.add(R.drawable.cafe);
listIcon.add(R.drawable.train);
listIcon.add(R.drawable.school);
listIcon.add(R.drawable.parlor);
listIcon.add(R.drawable.gas);
listIcon.add(R.drawable.fire_station);
}
我还检查了一些重要的堆栈溢出查询,发现他们建议像
gridview.getChildAt(1).setBackgroundColor(
Color.parseColor("#001111"));
但它在我的情况下显示空指针异常
答案 0 :(得分:0)
NPE会建议您尝试更改主要活动中的背景颜色,这是无法完成的。要更改列表或网格类型的View
,您必须在[自定义] ArrayAdapter
内和getView
方法内更改,然后您才能够在充气时将其访问。像:
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(this.layout, parent, false);
SomeObject obj = (SomeObject)data[position];
// Then access like so:
SomeView sv = (SomeView)rowView.findViewById(R.id.some_view);
// then access methods and properties as you normally would.
}
可以在这里找到一个很好的例子:http://www.mkyong.com/android/android-gridview-example/ 希望这有帮助!
答案 1 :(得分:0)
我不能同意@LokiSinclair所说的话。几点要补充
正如@LokiSinclair指出的那样,教程链接是一个很好的开始。