Listview не отображает правильные данные строки при нажатии - PullRequest
1 голос
/ 31 декабря 2011

У меня есть список, связанный с базой данных sqlite.У меня есть 3 элемента в базе данных, но каждый раз, когда я нажимаю на второе и третье значение, это дает мне тот же результат, что и самое первое значение в наборе записей.Как мне перемещаться по последующим элементам в наборе записей?Вот код:

            DBAdapter db = new DBAdapter(this);
    db.open();

    lv = (ListView)findViewById(R.id.list);

    //Get cursor for list items
    cursor = db.getAllChannels();


    lv.setOnItemClickListener(new OnItemClickListener(){


        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {


            //String cText = lv.getItemAtPosition(position).toString();

            //retrieve database values
            Toast.makeText(getApplicationContext(), cursor.getString(cursor.getColumnIndex(DBAdapter.KEY_STATIONURL)), Toast.LENGTH_SHORT).show();

        }

    });

1 Ответ

0 голосов
/ 31 декабря 2011

Если адаптер уже заполнен с помощью курсора, вы должны воздерживаться от получения данных с помощью курсора, подаваемого на адаптер. Вместо этого используйте getItem(int position), который должен вернуть курсор, который уже указывает на правильный элемент в вашем списке. Ваш код будет выглядеть так:

lv.setOnItemClickListener(new OnItemClickListener(){


        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {

            //retrieve database values
            Cursor tempCursor = getItem(position);
            Toast.makeText(getApplicationContext(), tempCursor.getString(tempCursor.getColumnIndex(DBAdapter.KEY_STATIONURL)), Toast.LENGTH_SHORT).show();

        }

    });

Вы можете пойти еще дальше и переопределить getItem(position) вашего CursorAdapter, чтобы он возвращал объект Data*, в котором вам просто нужно getKeyStationUrl()*, чтобы получить нужное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...