私のコードは、以下の例のようなものです。newView() を一度だけ呼び出すことになっていますが、なぜ何度も呼び出されているのかわかりませんか?
public class TimeListAdapter extends CursorAdapter {
private static class ViewHolder {
int nameIndex;
int timeIndex;
TextView name;
TextView time;
}
public TimeListAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
holder.name.setText(cursor.getString(holder.nameIndex));
holder.time.setText(cursor.getString(holder.timeIndex));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup
p parent) {
View view = LayoutInflater.from(context).inflate
p (R.layout.time_row, null);
ViewHolder holder = new ViewHolder();
holder.name = (TextView) view.findViewById(R.id.task_name);
holder.time = (TextView) view.findViewById(R.id.task_time);
holder.nameIndex = cursor.getColumnIndexOrThrow
p (TaskProvider.Task.NAME);
holder.timeIndex = cursor.getColumnIndexOrThrow
p (TaskProvider.Task.DATE);
view.setTag(holder);
return view;
}
}
たとえば、表示するアイテムが12個ある場合、ビューを再利用するために newView() メソッドを 1 回だけ呼び出す必要があります (間違っている場合は修正してください)。
しかし、ここでは少なくとも 7 回呼び出されます。私は何か間違ったことをしていますか?そうでなければ、CursorAdapter を使用して ListView を再利用することに根本的な問題がありますか?