2012-03-23 6 views
0

Helo。Android SpinnerとListViewがALLアイテムの場合

私は、次の要件があります。

私は(リストビューまたはスピナーは方向に依存する)のリストを持っているデータベース内のすべてのプロジェクトが表示されます。このリストは、プロジェクト関連データの詳細リストのフィルタとして機能します。これは正常に動作します(データを取得するためにLoaderとContentProviderを使用します)。プロジェクトリストと詳細リストは別々のフラグメントとして実現され、onProjectSelectedListenerインターフェイスを介して通信します。

私の要件は次のとおりです。フィルタを無効にしてすべてのデータを表示する(プロジェクトフィルタなしで)最初のリスト項目として "ALL"が必要です。どのように私はそれを実現することができます(SQLiteやその他のAndroidソリューションを歓迎します)。最高の私は取得するアイテム "アイテム" - アイテムの特定のID(たとえば、-100)を選択しました。

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

どのようにあなたが現在CursorAdapter(私は推測している?)結合するMergeAdapterを使用して、あなたの "すべて" がある新しいArrayAdapter<String>についてオプション?

あなたの現在のAdapterではなく、MergeAdapterを単に延長することで、クリックイベントなどに反応することができます。

+0

ありがとう、私はそれを試してみます。 – WebDucer

関連する問題