适用于2个数据库源的Android适配器

时间:2010-08-04 16:26:52

标签: sql android cursor

我的应用中有2个Android数据库。为了举个例子,假设数据库#1被称为JOBS并具有以下列: "Jobs Primary Key" - "Job Title" - "Job Description"

数据库#2被称为PEOPLE并具有以下列: "People Primary Key" - "First Name" - "Last Name" - "Jobs ID Key"

(是的,从数据库的角度来看,我知道这些不是最好的设计,这只是为了帮助我为问题画一幅画。)

在ListView中,我想显示“名字” - “姓氏” - “职位”栏目(数据库#1中的1列,数据库#2中的2列)。使用SimpleCursorAdapter,有可能以某种方式实现这一目标吗?

如果我不使用SimpleCursorAdapter,我能想到的唯一方法是使用ArrayAdapter,我使用StringBuilder将3列连接在一起,并填充ListView,但我想知道如果有更好的方法来实现这一点。

2 个答案:

答案 0 :(得分:0)

是的,这是可能的 - 假设您在一个数据库中表示两个表,而不是两个单独的数据库。

您只需要将您的数据库查询到join两个表中的信息。

例如,像这样的东西(完全未经测试):
String[] columns = { "first_name", "last_name", "title" };
SQLiteDatabase db = mDbOpenHelper.getReadableDatabase();
Cursor c = db.query("person LEFT OUTER JOIN job ON person.job_id = job.id", columns, null, null, null, null, null);

然后您可以像往常一样将Cursor传递给Adapter

答案 1 :(得分:0)

我似乎无法发表评论,但如果你想让没有工作的人也出现,你会想要使用LEFT OUTER JOIN而不是JOIN(在Christopher的回答中)。