【发布时间】:2018-03-10 05:03:00
【问题描述】:
我试图在 Android 应用中创建一个简单的ListView 并更改视图的背景颜色。
我通过简单地覆盖定义的ArrayAdapter 类的getView() 方法并在其中更改它就成功了。
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, Categories) {
@Override
public View getView(int pos, View v, ViewGroup vg) {
View view = super.getView(pos, v, vg);
switch (pos) {
case 0:
view.setBackgroundColor(Color.RED);
break;
case 1:
view.setBackgroundColor(Color.BLUE);
break;
default:
break;
}
return view;
}
};
但是,如果我删除 switch 语句并在返回视图的此函数之外使用它,则颜色不会更新。我的意思是这样的:(lv 是我的ListView)
lv.setAdapter(arrayAdapter);
for (int i=0; i<2; ++i) {
View V = (View) lv.getAdapter().getView(i, null, lv);
switch (i) {
case 0:
V.setBackgroundColor(Color.RED);
break;
case 1:
V.setBackgroundColor(Color.BLUE);
break;
default:
break;
}
}
它确实返回了对视图的引用,那么为什么它不能那样工作呢?
【问题讨论】:
-
你能贴出代码:
delete the switch-statement and use it outside this function with the returned view吗?我不确定我是否理解你在那里做了什么。 -
我编辑了我的帖子以使其更清晰。
-
您在
onCreate中有此代码?另外,您在第二种情况下是否收到任何异常?
标签: android listview view colors android-arrayadapter