私はlistArray
とitemStateList
の2つのリストを持っています。ListView.getChildAt()がアンドロイドでnullを返す理由
listArray
はListView
に表示するテキストを含むされ、itemStateList
はListView
で背景を設定する色名を含有します。 listView.getChildAt(i)
は常にnull
を返します。
代わりにlistView.getAdapter().getView(i)
を使用すると記載されているStackOverflowの解決方法があります。 listView.getAdapter()
となぜlistView.getChildAt()
が動作しないのかについての詳細はありませんでした。 listView.getChildAt()
をいつ使用するかを知りたいだけです。ここ
0は非常に最初に表示される行と(N-1)である
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()'の違いを知りたい。 –