单击时Listview不显示正确的行详细信息

时间:2011-12-31 10:34:43

标签: android sqlite

我有一个链接到sqlite数据库的listview。我在数据库中有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 :(得分:0)

当使用光标填充适配器时,应避免使用提供给适配器的光标获取数据。而是使用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();

        }

    });

您可以更进一步覆盖您的CursorAdapter getItem(position),以便它返回Data *对象,您只需getKeyStationUrl() *即可获得所需的值。< / p>