Chcę utworzyć bardzo prosty, niestandardowy adapter kursora kursora, aby ułatwić zmianę kolorów pozycji wiersza po kliknięciu. Korzystanie poniższy kodTworzenie niestandardowego adaptera prostego kursora
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;
}
mam kod z tego wątku https://stackoverflow.com/a/7649880/498449
bym użył prostego adaptera kursora i umieszcza kod w onClick, ale dlatego, że domyślna lista w ListFragment ponownie wykorzystuje widoki, podczas przewijania wiele widoków jest podświetlonych. Podczas rozmowy na IRC zasugerowano, że utworzę niestandardowy adapter kursora. Nie mogę jednak znaleźć najlepszej praktyki, jak to zrobić i gdzie pasowałby powyższy fragment kodu. Może bardzo docenić pomoc.
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;
}
}
Zaktualizowałem adapter kursora za pomocą kodu, który znalazłem online. Mam jednak dwa problemy. 1. Używam programu ładującego kursor, więc nie mam obiektu "kursora" do przekazania do konstruktora. 2. Otrzymuję ostrzeżenie od Eclipse, że konstruktor został wycofany.
w NewView utworzyć widok z LayoutInflater.inflate w Bindview ustawienia treści i tła w zależności od wyboru int, w onclick ty jsut zmień zaznaczenie int i powiedz adapterowi, że nastąpiła zmiana w jego treści. – zapl
@zapl możesz pokazać fragment kodu. Ponadto implementuję to za pomocą programu ładującego kursor, więc nie mam obiektu "kursora" do przekazania do konstruktora. –
W tej chwili nie mam fragmentu kodu :(prawdopodobnie google.) Z ładowarkami wykonaj 'adapter.swapCursor()' w 'onLoadFinished'. – zapl