Deseo crear un adaptador de cursor personalizado muy simple para facilitar el cambio de colores de los elementos de fila al hacer clic. Usando el siguiente códigoCreación de un adaptador de cursor simple personalizado
private static int save = -1;
public void onListItemClick(ListView parent, View v, int position, long id) {
parent.getChildAt(position).setBackgroundColor(Color.BLUE);
if (save != -1 && save != position){
parent.getChildAt(save).setBackgroundColor(Color.BLACK);
}
save = position;
}
me dieron el código de este hilo https://stackoverflow.com/a/7649880/498449
habría utilizado un adaptador de cursor simple y coloca el código en el onclick, pero debido a la lista por defecto en el ListFragment reutiliza puntos de vista, a medida que desplazas varias vistas, se muestran resaltadas. Hablando sobre IRC, se sugirió que crease un adaptador de cursor personalizado. Sin embargo, parece que no puedo encontrar la mejor práctica sobre cómo hacerlo y dónde cabría el fragmento de código anterior. Podría agradecer enormemente la ayuda.
public class AreaCursorAdapter extends CursorAdapter {
private Context context;
public AreaCursorAdapter(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView list_item = (TextView)view.findViewById(android.R.id.text1);
list_item.setText(cursor.getString(cursor.getColumnIndex(INDICATOR_NAME)));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
bindView(v, context, cursor);
return v;
}
}
He actualizado el adaptador del cursor con algún código que encontré en línea. Sin embargo, tengo dos problemas. 1. Estoy usando un cargador de cursor, por lo que no tengo un objeto "cursor" para pasar al constructor. 2. Recibo una advertencia de Eclipse de que el constructor ha quedado obsoleto.
en NewView se crea una vista con LayoutInflater.inflate, en Bindview se establece el contenido y el fondo de acuerdo a su int selección, en onclick que jsut cambie la selección int e indique al adaptador que ha habido un cambio en su contenido. – zapl
@zapl podría mostrar un fragmento de código. Además, estoy implementando esto usando un cargador de cursor, por lo que no tengo un objeto "cursor" para pasar al constructor. –
No tengo un fragmento en este momento :(google probablemente tiene. Con cargadores do 'adapter.swapCursor()' en 'onLoadFinished'. – zapl