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

发布于 2024-09-12 16:29:01 字数 464 浏览 3 评论 0原文

我的应用程序中有 2 个 Android 数据库。举个例子,假设数据库 #1 称为 JOBS 并具有以下列: “职位主键” - “职位名称” - “职位描述”

数据库 #2 称为 PEOPLE 并具有以下列: “人物主键”-“名字”-“姓氏”-“职位ID键”

(是的,我知道从数据库的角度来看,这些并不是最伟大的设计,这只是为了帮助绘制我的问题的图片)。

在 ListView 中,我想显示“名字”-“姓氏”-“职务”列(数据库 #1 中的 1 列,数据库 #2 中的 2 列)。使用 SimpleCursorAdapter 是否可以以某种方式完成此任务?

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

I have 2 Android Databases in my app. For the sake of an example, lets say Database #1 is called JOBS and has the following columns:
"Jobs Primary Key" - "Job Title" - "Job Description"

Database #2 is called PEOPLE and has the following columns:
"People Primary Key" - "First Name" - "Last Name" - "Jobs ID Key"

(Yes I know these are not the greatest of designs from a database perspective, this is just to help paint a picture for my question).

Within a ListView, I'd like to display columns "First Name" - "Last Name" - "Job Title" (1 column from Database #1, 2 columns from Database #2). Using a SimpleCursorAdapter, is it possible to somehow accomplish this?

If I don't use a SimpleCursorAdapter, the only way that I can think to accomplish this is to use an ArrayAdapter, where I use a StringBuilder to concatenate the 3 columns together, and fill the ListView, but I'm wondering if there is a better way to accomplish this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猛虎独行 2024-09-19 16:29:01

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

您只需查询数据库即可将两个表中的信息连接在一起。

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

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

Yes, this is possible — assuming you mean two tables in one database, rather than two separate databases.

You just need to query your database to join the info from the two tables together.

For example, something (completely untested) like this:

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);

Then you can pass the Cursor to the Adapter as usual.

幸福丶如此 2024-09-19 16:29:01

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

I can't seem to comment, but you'll want to use LEFT OUTER JOIN instead of JOIN (in Christopher's answer) if you want people without jobs to show up too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文