我有一个链接到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();
}
});
答案 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>