次の例を考えてみましょう。リスト項目の順序は getView() メソッドをオーバーライドする直前に正しいです。追加の作業を行うためにオーバーライドするたびに(例には示されていません)、アイテムの順序は本当に混乱します。下にスクロールして数字を表示し、上にスクロールして同じ数字をもう一度表示します。その奇妙な動作の原因は何ですか?どうすれば修正できますか?
package com.staticlist;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public class MainActivity extends ListActivity {
String[] items = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
"17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33",
"34", "35", "36", "37", "38", "39", "40" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new MyListAdapter(this, R.layout.main, items));
}
}
class MyListAdapter extends ArrayAdapter<String> {
public MyListAdapter(MainActivity mainActivity, int main, String[] items) {
super(mainActivity, main, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView == null) {
row = super.getView(position, convertView, parent);
} else {
row = convertView;
}
return row;
}
}