Desidero creare un cursore del cursore personalizzato molto semplice per facilitare la modifica dei colori degli elementi di riga al clic. Utilizzando il seguente codiceCreazione dell'adattatore del cursore semplice personalizzato
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;
}
ho ricevuto il codice da questa discussione https://stackoverflow.com/a/7649880/498449
avrei usato un adattatore cursore semplice e collocato il codice nella onClick, ma perché l'elenco predefinito nella ListFragment riutilizza vista, mentre scorri più viste, viene mostrato che sono evidenziate. Parlando su IRC, è stato suggerito di creare un adattatore del cursore personalizzato. Tuttavia, non riesco a trovare la migliore pratica su come farlo e su dove si inserisca lo snippet di codice sopra. Potrei apprezzare molto l'aiuto.
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;
}
}
Ho aggiornato l'adattatore del cursore con un codice che ho trovato online. Tuttavia, ho due problemi. 1. Sto usando un caricatore di cursori, quindi non ho un oggetto "cursore" da passare nel costruttore. 2. Ricevo un avviso da Eclipse che il costruttore è stato deprecato.
in NewView si crea una visualizzazione con LayoutInflater.inflate, in Bindview si imposta il contenuto e lo sfondo in base alla selezione int, in onclick si sono finite cambia la selezione int e comunica all'adattatore che è stata apportata una modifica al suo contenuto. – zapl
@zapl potresti mostrare uno snippet di codice. Inoltre, sto implementando questo usando un caricatore di cursori, quindi non ho un oggetto "cursore" da passare al costruttore. –
Al momento non ho uno snippet :(probabilmente Google ha. Con i caricatori fare 'adapter.swapCursor()' in 'onLoadFinished'. – zapl