2012-03-23 110 views
0

Helo。Android微調和ListView與所有項目

我有以下要求:

我有一個列表(ListView控件或微調取決於定向),顯示數據庫中的所有項目。此列表用作項目關聯數據的詳細列表的篩選器。這工作正常(我使用Loader和ContentProvider來獲取數據)。項目列表和詳細信息列表是作爲單獨的片段實現的,並通過onProjectSelectedListener接口進行通信。

我的要求是:我需要「ALL」作爲第一個列表項,禁用過濾器並顯示所有數據(沒有項目過濾器)。我如何認識到(SQLite或Android解決方案是受歡迎的)。最好的我得到onItem選擇一個特定的ID(例如:-100)爲「ALL」 - 項目。

現在

Project 1 (id: 1) 
Project 2 (id: 2) 
Project 3 (id: 3) 
... 

要求

ALL Projects (id: -100) 
Project 1 (id: 1) 
Project 2 (id: 2) 
Project 3 (id: 3) 
... 

回答

0

我解決了SQLite數據庫上的聯合視圖的問題。

CREATE 
    VIEW all_projects AS 
SELECT 
    -100     AS _id, 
    'ALL'     AS pj_name, 
    'All Projects'   AS pj_comment, 
    1      AS pj_is_active, 
    1      AS pj_all 
UNION 
SELECT 
    *, 
    1      AS pj_all 
FROM 
    projects 

內容提供商進行選擇的觀點,如果其中語句「pj_all」欄和TABEL,如果不是。

if (!TextUtils.isEmpty(where) && where.contains(COLUMN_WITH_ALL)) { 
    queryBuilder.setTables(VIEW_ALL); 
} 
else { 
    queryBuilder.setTables(TABLE_NAME); 
} 
1

如何使用MergeAdapter結合當前的CursorAdapter(我猜?),並有你的 「所有」 的新ArrayAdapter<String>選項?

您可以通過簡單地延長MergeAdapter而不是當前的Adapter來響應點擊事件等。

+0

謝謝,我會試試看。 – WebDucer 2012-03-23 09:14:39