Java 如何为gridview中的不同项目设置不同的背景色?
我想为每个gridview项目设置不同的背景色,我已经这样尝试过了Java 如何为gridview中的不同项目设置不同的背景色?,java,android,gridview,android-gridview,Java,Android,Gridview,Android Gridview,我想为每个gridview项目设置不同的背景色,我已经这样尝试过了 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.places_gridview); prepareList(); mAdapter = new PlacesGridViewAdapter
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);
}
但在我的例子中,它显示空指针异常NPE会建议您尝试更改主要活动中的背景颜色,这是无法做到的。要更改列表或网格类型的
视图
,您必须在[custom]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.
}
这里可以找到一个很好的例子:
希望这有帮助 我完全同意@Lokisinlair所说的话。需要补充的几点
正如@LokiSinclair所指出的,教程链接是一个很好的开始。是的,我现在知道了。如你所说,我必须改变适配器的颜色。谢谢你的帮助。别忘了接受,或者投票。两者都可以:)很高兴我能帮忙!
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.
}