2010-08-04 97 views
1

我的應用程序中有2個Android數據庫。舉一個例子起見,讓說數據庫#1被稱爲JOBS並具有下列: "Jobs Primary Key" - "Job Title" - "Job Description"適用於2個數據庫源的Android適配器

數據庫#2被稱爲人,有以下欄目: "People Primary Key" - "First Name" - "Last Name" - "Jobs ID Key"

(是的,我知道這些不是從數據庫的角度來看最大的設計,這只是幫助爲我的問題繪製圖片)。

在一個ListView中,我想顯示「First Name」 - 「Last Name」 - 「Job Title」列(數據庫#1中的1列,數據庫#2中的2列)。使用SimpleCursorAdapter,是否有可能以某種方式實現這一點?

如果我不使用SimpleCursorAdapter,我認爲完成此操作的唯一方法是使用ArrayAdapter,我使用StringBuilder將3列連接在一起,然後填充ListView,但我是想知道是否有更好的方法來實現這一點。

回答

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

然後,你可以通過CursorAdapter如常。

+0

非常感謝克里斯託弗,今晚我必須嘗試一下。我會讓你知道結果如何。 – Michael 2010-08-04 19:46:16

+0

謝謝你們,這個竅門,使用了左外連接。我很抱歉接受答案的遲到,我沒有得到立即測試的機會。再次感謝! – Michael 2010-08-09 15:37:15

0

我似乎無法評論,但如果您希望沒有工作的人也能顯示出來,您會希望使用LEFT OUTER JOIN而不是JOIN(在Christopher的答案中)。

+0

啊,我確實想過那樣就懶惰了。謝謝,我已經添加到我的答案:) – 2010-08-05 08:33:13