Проблема с курсором с флажком CustomAdapter

#android #checkbox #cursor

Вопрос:

У меня есть представление списка, заполненное отфильтрованными данными из базы данных SQLite с помощью SimpleCursorAdapter

Однако я всегда получаю _id от следующего элемента в списке; курсор всегда находится на один элемент дальше.

например: Если я нажму на элемент с 7142, он вернет 7243; в 7243 идентификатор 7037 и так далее, как здесь: _id 7242 7243 7037 7116

Что случилось с моим адаптером? Как я должен изменить код? Может кто-нибудь показать мне решение с наилучшими пожеланиями

С помощью этого адаптера я заполняю ListView

 MyDataAdapter a = new MyDataAdapter(getActivity(), R.layout.fts_card, crs, from, to);
          searchLv.setSelection(0);
          searchLv.setAdapter(a);
          a.notifyDataSetChanged();
 

и это мой пользовательский адаптер

 enter public class MyDataAdapter extends SimpleCursorAdapter {
private Cursor c;
private Context context;
String rowID;
int columnvalue;
MY_DB db;

private ArrayList<Boolean> itemChecked = new ArrayList<Boolean>();

public MyDataAdapter(Context context, int layout, Cursor c, String[] from,
                     int[] to ) {

    super(context, layout, c, from, to);

    this.c = c;
    this.context = context;

    for (int i = 0; i < this.getCount(); i  ) {
        itemChecked.add(i, false);
    }
}

public View getView(final int pos, View inView, ViewGroup parent) {
    if (inView == null) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         inView = inflater.inflate(R.layout.fts_card, null);
    }

    this.c.moveToPosition(pos);

    ((TextView) inView.findViewById(R.id.fts_tvTitel)).setText(c.getString(c.getColumnIndex("titel")));

    final CheckBox cBox = inView.findViewById(R.id.fts_chBoxWichtig); // my CheckBox
   

    final View toastInView = inView;

    rowID = c.getString(c.getColumnIndex("_id"));

    cBox.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            CheckBox cb = (CheckBox) v.findViewById(R.id.fts_chBoxWichtig);

            if (cb.isChecked()) {
                itemChecked.set(pos, true);

                // Update the DB

                Toast.makeText(toastInView.getContext(), rowID  , Toast.LENGTH_SHORT).show();

            } else if (!cb.isChecked()) {
                itemChecked.set(pos, false);
                // do some operations here

                cb.setText("Is nothing");
            }
            notifyDataSetChanged();
        }
    });
    cBox.setChecked(itemChecked.get(pos));  
    return inView;
}
}