Android - bindView и newView для двух макета просмотра в CursorAdapter
Итак, вот история:
Я хочу использовать два макета в моем адаптере. В общем, мне нужно иметь if в newView (), чтобы определить, какое представление возвращать, и if в bindView (), чтобы также знать, что делать в представлении. Это правильный подход?
Я думаю о чем-то вроде этого:
@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()
}
}
Я на правильном пути здесь? Потому что, согласно моим журналам, c.getPosition () в newView дает другой результат для c.getPosition () в bindView. Я на самом деле думаю просто переопределить getView (), но они сказали, что хорошей практикой является переопределение newView и bindView в CursorAdapter.