La mia domanda è - fa CursorAdapter ri-utilizza viste Di internamente attuazione del modello ViewHolder o ha bisogno di essere codificato come noi normalmente facciamo in ArrayAdapter personalizzato?
Non sono sicuro di cosa si fa riferimento per il modello ViewHolder
. Se ti stai riferendo ad avere una classe helper in cache cercando ogni volta la visualizzazione (e impostandola come tag per la riga View
) la risposta è no. Se si desidera implementare questo modello, è necessario impostare il titolare (cercare le viste nella vista riga con findViewById
) nel metodo newView
e impostarlo come tag per la vista riga. Quindi nel metodo bindView
è possibile chiamare getTag
, recuperare il titolare e utilizzarlo. Un esempio:
// 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;
}
// ...
se si fa riferimento alla convertView
essere riutilizzato (come in Cursor
adattatori non basate) allora la risposta è sì, il metodo getView
implementa questo modello, è sufficiente implementare i metodi newView
e bindView
e hai la garanzia di ottenere una vista che è stata riciclata (se possibile in quel momento).
da 'ViewHolder' intendo il modello' titolare della licenza ... –
@Mahendra Così è stato il primo caso. No, il pattern del titolare non è implementato in 'CursorAdapter' (dall'SDK o dal pacchetto di compatibilità). – Luksprog
La mia domanda riguarda più la 'codifica del 'Titolare' nell'adattatore personalizzato o non è necessario'? Vedo che la classe 'CursorAdapter' ha anche il metodo' getView' .. –