3

だからここに物語があります:

アダプターで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をオーバーライドすることをお勧めします。

4

1 に答える 1