convertView で ViewHolder パターンを実装しようとしています。2 つの質問:
1) 行 #1 と #2 (パターンに必要) をコメントすると、すべて正常に動作します。if が配置されると、すべてがスクランブルされ、リストの最初の要素が 2 回 (リストの最初と最後に) 表示され、方向が変更されてリストがスクロールすると、すべてがごちゃごちゃになります。なぜこれが起こっているのですか?
2) ListActivity を使用して、TextView と ArrayAdapter (#3) の文字列の配列を提供していますが、何らかの理由でまだ行 (#4) が必要です。それ以外の場合、リスト項目は空白です。これは、super.getView() を使用していないためですか?
class SushiAdapter extends ArrayAdapter<String> {
private final Activity context;
SushiAdapter(Activity context) {
super(context, R.layout.row, R.id.label, MenuItems); // #3
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) { //#1
LayoutInflater inflater = context.getLayoutInflater();
row = inflater.inflate(R.layout.row, parent, false);
ViewHolder holder = new ViewHolder();
holder.icon = (ImageView) row.findViewById(R.id.icon);
holder.position = position;
holder.item = (TextView) row.findViewById(R.id.label);
row.setTag(holder);
} // #2
ViewHolder newHolder = (ViewHolder) row.getTag();
newHolder.item.setText(MenuItems[newHolder.position]); // #4
newHolder.icon.setImageResource(R.drawable.sushi);
return row;
}
}