2012-03-23 82 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