アダプターには効率上の理由からビューリサイクラーがあるため、これが「ランダム性」の原因です...
とにかく、追加された最後の行のインデックスを追跡するカスタムアダプターを作成しgetView()
、現在のインデックスがこの最後のインデックスと一致するかどうかを確認します。
- その場合は、背景色を変更してください
- そうでない場合は 、元の背景色を復元します。
AndroidのRomainGuyがGoogleTalksでビューリサイクラーについて説明するのをご覧ください。
ArrayAdapterを拡張する例を次に示します。
public class MyArrayAdapter<T> extends ArrayAdapter<T> {
private int lastAdded;
public MyArrayAdapter(Context context, int textViewResourceId, List<T> objects) {
super(context, textViewResourceId, objects);
lastAdded = objects.size() - 1;
}
@Override
public void add(T object) {
lastAdded = getCount();
super.add(object);
};
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if(position == lastAdded) // Red
view.setBackgroundColor(0xffff0000);
else // Transparent
view.setBackgroundColor(0x00000000);
return view;
}
@Override
public void insert(T object, int index) {
lastAdded = index;
super.insert(object, index);
};
}
注:これは包括的ではありません。アダプターの使用方法に応じて、オーバーライドする場合としない場合があるデータを追加する方法は他にもあります。