android - bindView i nowyWidok dla układu dwóch widoków w CursorAdapter
Oto historia:
Chcę użyć dwóch układów w moim adapterze. Zasadniczo muszę mieć if w newView (), aby określić, który widok ma zostać zwrócony, oraz if w bindView (), aby wiedzieć, co robić w widoku. Czy to właściwe podejście?
Myślę o czymś takim:
@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);
}
}
Następnie na 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()
}
}
Czy jestem tutaj na dobrej drodze? Ponieważ zgodnie z moimi logami c.getPosition () w newView daje inny wynik na c.getPosition () w bindView. Właściwie myślę o nadpisaniu getView (), ale powiedzieli, że dobrą praktyką jest nadpisywanie newView i bindView w CursorAdapter.