Добавление данных в listView с помощью пользовательского CursorAdapter - PullRequest
1 голос
/ 04 ноября 2011

Привет. Я хочу добиться следующего результата в своей ListActivity:

  1. Первый элемент, описание

  2. Второй элемент, описание

  3. ...

где Имя и описание происходят от

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 рисует виды.Если прокрутить список, скажем до середины, а затем повернуть, все эти числа будут смешаны следующим образом:

  1. Первый элемент

  2. Второй элемент

  3. Третий элемент

...