从Android中的不同SQLite表中检索数据?

时间:2011-07-10 07:46:14

标签: android sqlite android-listview onitemclicklistener

我想知道我是否有这种情况:

  • 在我们的SQLite数据库中,有一些表(比如说四个)。每个表由两列组成:Title and Content
  • 我们检索了所有四个表中的标题,并将其显示在一个ListView

问题是:我们如何处理onItemClickListener以便我们可以检索所选项目的Content,因为项目来自不同的表格?

我想我会遇到这样的问题,我只是想知道它是否可以处理。

感谢。

2 个答案:

答案 0 :(得分:2)

我会说使用ArrayAdapter并将数据包装在一个自定义类中,该类包含它来自的表(如果需要,还可以使用ID等),然后只需知道即可获取ID和表列表中的索引。

该课程可能如下所示:

public static class ListItem {
    public String title, table;
    // Maybe include these as well?
    public String content;
    public int id;

    @Override
    public String toString() {
        return title; // Or something else maybe?
    }
}

然后只需将游标中的数据构建到ListItem[]并创建适配器,如下所示:
new ArrayAdapter<ListItem>(data);

此解决方案的一个问题是您需要在内存中加载所有内容,如果有大量数据,您可以创建包含所有四个游标的自定义Cursor并使用CursorAdapter代替。

答案 1 :(得分:1)

Nicklas A.提出的解决方案将起到作用。但如果您有相同的项目,为什么要将它们保存在4个不同的表中?如果您的项目相同,则可以将它们保存在signle表中,只需添加一些额外的列以在需要时识别它们。如果您的项目不相同,则为每个项目创建4个模型类,并在每个模型中处理onItemClicked。