Я хочу создать очень простой настраиваемый адаптер курсора для облегчения изменения цвета элементов строки при щелчке. Используя следующий код
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;
}
, я получил код из этой темы https://stackoverflow.com/a/7649880/498449
Я бы использовал простой адаптер курсора и поместил код в onClick, но поскольку список по умолчанию в ListFragment повторно использует представления, при прокрутке несколько представлений будут выделены. В разговоре по IRC мне предложили создать собственный адаптер курсора. Тем не менее, я не могу найти наилучшую практику, как это сделать, и куда бы вписался приведенный выше фрагмент кода. Буду очень признателен за помощь.
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;
}
}
Я обновил адаптер курсора кодом, который нашел в Интернете. Однако у меня есть две проблемы. 1. Я использую загрузчик курсора, поэтому у меня нет объекта "курсор" для передачи в конструктор. 2. Я получаю предупреждение от Eclipse о том, что конструктор устарел.