私の Android アプリケーションには、5 つの要素を持つ ListView があります。listView の一部の要素の背景を変更するために、カスタム アダプターを作成しました。たとえば、リスト ビューの 2 番目の項目はまだ準備ができていないので、やりたいので、まだ完了していないsetBackground(Color.Gray)
ように見せることができます。それを行うために、次のようにカスタム アダプターの ArrayAdapter から getView() メソッドをオーバーライドしました。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if(!itensAvailable[position]) v.setBackgroundColor(Color.Gray);
return v;
}
奇妙なことに、ブール値を使用してitensAvailable[position]
も!itensAvailable[position]
、リストの最初の要素を使用しても、常に背景が変更されます! リストの他のすべての要素は、最初の要素を除いて、期待どおりに動作しています。それよりも奇妙なこと、私がそうするなら
if(position == 2) v.setBackgroundColor(Color.Gray);
位置 2 のアイテムから背景を変更し、最初のアイテムも変更します! 私が行った場合
if(position == 2) {
v.setBackgroundColor(Color.Gray);
System.out.println(v.getText());
}
さらに奇妙な!最初の項目のテキストではなく、位置 2 のテキストのみが印刷されます。
何が起こっている?アンドロイドのバグ?ちなみに、XOOM 3.2 Honeycomb デバイスでテストしています。
そして明らかに、このifコードにコメントすると、最初のアイテムの背景は変更されていません。