我有两个列表listArray
和itemStateList
。为什么ListView.getChildAt()在android中返回null
listArray
包含文本要显示在ListView
和itemStateList
包含颜色名称以设置ListView
中的背景。但listView.getChildAt(i)
总是返回null
。
我在StackOverflow上找到了一些解决方案,声明使用listView.getAdapter().getView(i)
代替。但没有详细说明,为什么要使用listView.getAdapter()
以及为什么listView.getChildAt()
不起作用。也只是想知道何时使用listView.getChildAt()
。
下面是代码..
public void createAndSetAdapter(){
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listArray);
listView.setAdapter(adapter);
for(int i = 0; i < listArray.size(); i++){
switch (itemStateList.get(i)){
case "Green_color":
listView.getAdapter().getView(i, null, listView).setBackgroundColor(Color.parseColor("#AAFF7F"));
break;
case "red_color":
listView.getAdapter().getView(i, null, listView).setBackgroundColor(Color.parseColor("#FFAAAA"));
break;
default:
break;
}
}
}
''for'循环中的listArray'和'switch'中的'itemStateList'都不同'list' –
'for'循环的循环等于'listArray'的大小。而'switch'则根据itemStateList来检查在ListView中设置的颜色。 –
为什么-1,我的代码工作正常,只想知道'getChildAt()'和'getAdapter()。getView()'之间的区别。 –