Привет. Я хочу добиться следующего результата в своей ListActivity:
Первый элемент, описание
Второй элемент, описание
...
где Имя и описание происходят от
Cursor c = db.rawQuery(...);
Я использовал SimpleCursorAdapter иУ меня не было проблем.Затем я решил внести некоторые изменения в данные, которые у меня есть в курсоре, прежде чем их отобразить.Я хотел иметь внутренний счетчик, который будет увеличиваться каждый раз, когда адаптер курсора отображает новое представление.Вот почему я решил реализовать свой собственный CustomCursorAdapter расширение SimpleCursorAdapter :
public class TrainingsListCursorAdapter extends SimpleCursorAdapter{
private Context context;
private int layout;
int list_item_order_number = 1;
public TrainingsListCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.context = context;
this.layout = layout;
}//contructor
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent){
Cursor c = getCursor();
final LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layout, parent, false);
String durationCol = c.getString(c.getColumnIndex("duration"));
if(durationCol != null){
durationCol = minutesForSeconds(durationCol);
}
TextView textViewDuration = (TextView) v.findViewById(R.id.duration);
TextView order_number = (TextView) v.findViewById(R.id.list_item_num);
if(order_number != null){
order_number.setText(String.valueOf(list_item_order_number));
}
if(textViewDuration != null){
textViewDuration.setText(durationCol);
}
list_item_order_number++;
return v;
}
У меня есть переменная-член _list_item_order_number_, которая увеличивается на единицу каждый раз, когда представление / строкарисуется (вызывая метод newView ()).Этот номер отображается в каждом представлении / элементе списка и соответствует порядку элементов списка ...
Проблема, с которой я сталкиваюсь, заключается в том, что при повороте экрана этот номер больше не соответствует элементам списка.Например, мой третий элемент имеет значение 1 и так далее ...
Я думаю, это как-то связано с порядком, в котором Android рисует виды.Если прокрутить список, скажем до середины, а затем повернуть, все эти числа будут смешаны следующим образом:
Первый элемент
Второй элемент
Третий элемент