2012-03-23 2 views
0

Helo.전체 항목이 포함 된 Android Spinner 및 ListView

나는 목록이 (목록보기 또는 스피너 방향에 따라 다름) 데이터베이스의 모든 프로젝트를 보여줍니다

나는 다음과 같은 요구 사항이 있습니다. 이 목록은 프로젝트 관련 데이터의 상세 목록에 대한 필터로 작동합니다. 이것은 잘 작동합니다 (저는 Loader와 ContentProvider를 사용하여 데이터를 얻습니다). 프로젝트 목록 및 세부 정보 목록은 별도의 조각으로 구현되며 onProjectSelectedListener 인터페이스를 통해 통신합니다.

필자의 요구 사항은 첫 번째 목록 항목에 "ALL"이 필요하고 필터를 비활성화하고 모든 데이터를 프로젝트 필터없이 표시해야합니다. 어떻게하면 (SQLite 나 다른 안드로이드 솔루션을 환영합니다) 실현할 수 있습니다. 내가 입을 최고의 아이템 "ALL"아이템을위한 특정 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