android - bindView y newView para el diseño de dos vistas en CursorAdapter

Así que aquí está la historia:

Quiero usar dos diseños en mi adaptador. Básicamente, necesito tener un if en el newView () para determinar qué vista devolver y un if en bindView () para saber también qué hacer en la vista. ¿Es este el enfoque correcto?

Estoy pensando en algo como esto:

@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);
    }
}

Entonces en 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()
    }
}

¿Estoy en el camino correcto aquí? Porque según mis registros, el c.getPosition () en newView da un resultado diferente en c.getPosition () en bindView. De hecho, estoy pensando en simplemente anular el getView (), pero dijeron que la buena práctica es anular el nuevo viewView y bindView en CursorAdapter.

Respuestas a la pregunta(1)

Su respuesta a la pregunta