gpt4 book ai didi

android - 关于从 ListView 中检索 View 的困惑

转载 作者:行者123 更新时间:2023-11-30 00:20:06 24 4
gpt4 key购买 nike

我试图在 Android 应用程序中创建一个简单的 ListView 并更改 View 的背景颜色。

我通过简单地覆盖已定义的 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 语句并在此函数之外使用返回 View ,颜色不会更新。我的意思是这样的:(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;
}
}

它确实返回了对 View 的引用,那么为什么它不能那样工作呢?

最佳答案

每当你改变一些东西时调用:

ArrayAdapter.notifyDataSetChanged();

无论如何,这不是英国人的好方法,但我想每个解决方案都是一个解决方案¯_(ツ)_/¯

关于android - 关于从 ListView 中检索 View 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com