Moje pytanie brzmi - czy CursorAdapter ponownie wykorzystuje widoki, których autorem jest wewnętrznie wdrożenia wzoru ViewHolder czy to musi być zakodowany jako normalnie zrobić w niestandardowym ArrayAdapter?
Nie jestem pewien, do czego odnosi się wzór ViewHolder
. Jeśli chodzi o posiadanie klasy pomocniczej do buforowania w celu wyświetlenia widoku za każdym razem (i ustawienie go jako znacznika dla wiersza View
), wówczas odpowiedź brzmi "nie". Jeśli chcesz zaimplementować ten wzorzec, musisz skonfigurować uchwyt (poszukaj widoków w widoku wiersza za pomocą findViewById
) w metodzie newView
, a następnie ustawić go jako znacznik widoku wiersza. Następnie w metodzie bindView
możesz zadzwonić pod numer getTag
, pobrać uchwyt i użyć go. Przykład:
// custom CursorAdapter ...
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View rowView = ((LayoutInflater) context
.getSystemService("layout_inflater")).inflate(
R.layout.row_layout, parent, false);
ViewHolder holder = new ViewHolder();
holder.v1 = rowView.findViewById(R.id.v1);
holder.v2 = rowView.findViewById(R.id.v2);
rowView.setTag(holder);
return rowView;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
// use the holder filled with views
// hlder.v1.setSomething
}
class ViewHolder {
View v1, v2;
}
// ...
Jeśli odnosimy się do convertView
ponownego użycia (jak w niewyspecjalizowanych Cursor
adapterów opartych) to odpowiedź brzmi tak, metoda getView
realizuje ten schemat, wystarczy wdrożyć metody newView
i bindView
i masz gwarancję uzyskania widoku, który został poddany recyklingowi (jeśli to możliwe w tym momencie).
Przez 'ViewHolder' mam na myśli wzorzec' Holder' ... –
@Mahendra Więc to był pierwszy przypadek. Nie, wzorzec właściciela nie jest zaimplementowany w 'CursorAdapter' (z pakietu SDK lub pakietu kompatybilności). – Luksprog
Moje zapytanie dotyczy raczej "kodowania" posiadacza "w niestandardowej karcie lub czy nie jest wymagane? Widzę, że klasa 'CursorAdapter' również ma metodę' getView' .. –