如何通过Sqlite和ListActivity导航数据

时间:2014-03-10 11:29:51

标签: android sqlite listactivity listadapter

我正在使用

显示来自SQLite的数据
ListAdapter adapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_list_item_2,
            employees,
            new String[] {"FirstName","LastName"},
            new int[] {android.R.id.text1,android.R.id.text2},0);
    getListView().setAdapter(adapter);

empoyees - 我的光标。

数据显示正确,但如何获取我从SQLite使用哪一行对List中的项目进行OnClick? 例如,我有2个表

1)Category
_id Integer
Name Text

2)Articles
_id Integer
Name text
CategoryId (foreing key)

所以在第一个屏幕上我显示所有分类,然后在列表项目上单击我想显示来自指定类别的文章,该怎么做?

1 个答案:

答案 0 :(得分:1)

请勿在适配器中使用光标。构建一个数组并发送数组。在该数组中,通常类似List<MyDataRecordHolder>(其中MyDataRecordHolder是您创建的对象并填充数据库中的数据),您必须设置对行ID的引用。

更新:

创建MyDataRecordHolder :(伪代码)

List<MyDataRecordHolder> list = new List<MyDataRecordHolder>();
在您获取数据的循环中

MyDataRecordHolder record = new MyDataRecordHolder();
record.setId(cursor.get("rowid"))
//set any other pertinent data
list.add(record);

适用于您的适配器:

ListAdapter adapter = new SimpleCursorAdapter(this,
        android.R.layout.simple_list_item_2,
        list,
        new String[] {"FirstName","LastName"},
        new int[] {android.R.id.text1,android.R.id.text2},0);

注意,您现在正在向适配器提供列表(列表)。

在适用于您的行的OnClick中,您将获得当前的MyDataRecordHolder:

final MyRecordHolder record = getItem(position);
String id = record.getId();
//make new db query based on your id