Mi pregunta es - hace CursorAdapter reutiliza vistas por el interior implementar el patrón ViewHolder o necesita ser codificado ya que normalmente hacemos en ArrayAdapter personalizada?
No estoy seguro de a qué se refiere por el patrón ViewHolder
. Si se refiere a tener una clase auxiliar para almacenar en caché buscando ver cada vez (y establecerlo como una etiqueta para la fila View
), entonces la respuesta es no. Si desea implementar este patrón, deberá configurar el titular (busque las vistas en la vista de fila con findViewById
) en el método newView
y luego configúrelo como la etiqueta para la vista de fila. Luego, en el método bindView
, puede llamar al getTag
, recuperar el titular y usarlo. Un ejemplo:
// 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;
}
// ...
Si se refiere a la convertView
ser reutilizado (como en Cursor
adaptadores no basados), entonces la respuesta es sí, el método getView
implementa este patrón, sólo tiene que poner en práctica los métodos newView
y bindView
y tiene la garantía de obtener una vista que fue reciclada (si es posible en ese momento).
Por 'ViewHolder' Me refiero al patrón' Holder' ... –
@Mahendra Así que fue el primer caso. No, el patrón del titular no está implementado en 'CursorAdapter' (del SDK o paquete de compatibilidad). – Luksprog
Mi consulta es más acerca de "codificar el' Titular' en un adaptador personalizado o no es obligatorio '? Veo que la clase 'CursorAdapter' también tiene el método' getView' .. –