だからここに物語があります:
アダプターで2つのレイアウトを使用したい。したがって、基本的に、返すビューを決定するためにnewView()にifがあり、ビューで何をするかを知るためにbindView()にifが必要です。これは正しいアプローチですか?
私はこのようなことを考えています:
@Override
public View newView(Context context, Cursor c,
ViewGroup parent) {
if (HEADER == getItemViewType(c.getPosition())){
return (View) layoutInflater.inflate(R.layout.my_header, null);
} else {
return (View) layoutInflater.inflate(R.layout.my_row, null);
}
}
次にbindViewで:
@Override
public void bindView(final View view, final Context context,
Cursor c) {
if (TYPE_HEADER == getItemViewType(c.getPosition())){
// init and set values here e.g. view.findViewById().setText()
} else {
// init and set values here e.g. view.findViewById().setText()
}
}
私はここで正しい方向に進んでいますか?私のログによると、newViewのc.getPosition()は、bindViewのc.getPosition()で異なる結果をもたらすためです。私は実際にはgetView()をオーバーライドすることを考えていますが、彼らは、CursorAdapterのnewViewとbindViewをオーバーライドすることをお勧めします。