2012-12-18 1 views
4

난 당신이 BaseAdapter을 확장 사용자 정의 Adapter를 만들고 AdapterView가에있는 행에 따라 팽창 할 수있는 다양한 레이아웃을 만들 ..Android - SimpleCursorAdapter가 BaseAdapter와 같은 여러 레이아웃을 허용합니까?

을하지만 SimpleCursorAdapter와 정의의 간단한 양을 얻을 수있는 방법이있을 수있어?

예 : 나는 데이터베이스가 있고 그것을 쿼리하고 행 레이아웃을 교대로 ListView 결과를 반환하고 싶습니다.

SimpleCursorAdapter합니까? 아니면 이에 대한 우아한 해결책이 있습니까?

건배

답변

4

그러나 SimpleCursorAdapter와 정의의 간단한 양을 얻을 수있는 방법이있다?

BaseAdapter와 마찬가지로 CursorAdapter 또는 SimpleCursorAdapter를 확장하여 사용자 지정을 할 수 있습니다.

예. 데이터베이스가 있고 그것을 쿼리하고 행 레이아웃을 교대로 ListView 결과를 반환하고 싶습니다. 만 행 색상 같은 사소한 일을 교류하는 경우

, 당신은 단순히 bindView()을 무시하고 적절한 배경 색상을 설정 if(cursor.getPosition() % 2 == 0) (또는 == 1)를 확인할 수 있습니다.

각 레이아웃에서 다른 유형 또는 뷰 수를 사용하는 경우 getViewTypeCount()getItemViewType()을 무시해야합니다. 그런 다음 적절한 레이아웃을로드하려면 newView()getItemViewType()을 사용하고 bindView()에 적절한 데이터를 표시하십시오.

+1

그래서 'SimpleCursorAdapter' 대신'CursorAdapter'가 필요합니까? 대부분 행 색상 일 가능성이 높으므로보다 단순한 bindView() - 환호에 대해 알아두면 좋습니다. – mgibson

+2

SimpleCursorAdapter를 확장 할 수 있지만 [소스 코드] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android /widget/SimpleCursorAdapter.java#SimpleCursorAdapter.bindView%28android.view.View%2Candroid.content.Context%2Candroid.database.Cursor%29) SimpleCursorAdapter는 많은 검사를 수행합니다 (예 : TextView 또는 ImageView 또는 그 밖의 레이아웃 else) _every_ row _every_ time ... 코드에 따라 CursorAdapter를 재정 의하여 더 빠른 클래스를 만들 수 있습니다. 그러나 어느 쪽도 효과가있을 것입니다. – Sam

+0

아, 예, 샘을 청소 해 주셔서 고마워요! – mgibson