2011-01-28 4 views
1

SimpleCursorAdapter를 사용하여 내 데이터베이스의 항목으로 ListView를 채 웁니다. 사용자가 항목을 클릭하면 해당 항목의 세부 활동으로 이동합니다. 해당 페이지를 표시하는 가장 좋은 방법은 무엇입니까? 그냥 텍스트를 설정하고 데이터베이스에서 채우거나 다른 SimpleCursorAdapter를 사용하여 TextViews를 설정하려는 모든 TextViews를 잡는 표시 함수를 작성하십시오. 대답은 어댑터를 사용하는 경우 ListView에서 세부 정보 페이지를 이동해야합니까? 이 일을비 목록보기에 어댑터 사용

답변

4

나는 최선의 방법은 목록 활동에서 일부 ID를 추출하고 해당 활동을 상세 활동에 전달하는 것이라고 믿는다.

많은 데이터가 아니라면 모든 데이터를 보낼 수 있습니다. 문제는 한 가지 활동에서 다른 활동으로 복잡한 데이터 (많은 양의 데이터가 아님)를 보내도록 의도가 의도되지 않았기 때문입니다.

세부 활동에서 데이터베이스의 데이터를 가져옵니다 (예 : select * from people where id = 123). 이제 그 테이블의 열을 간단한 객체에 매핑 할 수 있습니다.

최종 단계로
public class Person { 
    String name; 
    Integer age; 
    String address; 
} 

는, 사용자에게 데이터를 표시 레이아웃에서 일부 textviews을 잡고 데이터베이스에서 얻은 사람에 당신이 가지고있는 값으로 자신의 텍스트를 설정 : 예를 들어

.

TextView ageTv = (TextView)findViewById(R.id.age); 
ageTv.setText(person.age + " years old"); 
//etc 

+0

알았어, 그게 내가 현재하고있는 일이야. 이 시나리오에서 어댑터를 사용하는 스타일인지 궁금합니다. –

+0

표시 할 항목 목록이있는 경우에만 어댑터를 사용합니다. 나는 이것이 일반적인 관행이라고 생각한다. –

0

몇 가지 방법 :

  • 간단히 ListView에에 항목 청취자를 부착하고 내부, 새로운 의도를 호출하고 (바람직하게는 소량의 데이터를) 그것을 일부 데이터를 전달합니다.
  • 또는 세부 활동 목록보기에서 다른 어댑터를 만들 수도 있습니다.이 어댑터는 간단한 커서 어댑터를 사용하여 sqlite db의 세부 정보를 가져옵니다. (더 많은 데이터)

정말 당신이 해결하려고하는 문제에 달려 있습니다. SimpleCursorAdapter가 배열 논리와 연결되어 있지 않습니까? 그 모든 집합에 대한 깔끔한 해결책이 필요합니까?

+0

SimpleCursorAdapter는 깔끔한 해결책입니다. 목록보기가 아닌 항목을 작동 시키려면 이상한 것인지 궁금합니다. –

1

제이슨

당신은이 경우에 어댑터를 사용할 필요가없는 세부 활동에 ListView를 사용할 필요는 더 복잡하고 필요 이상으로 자원 집약적, 없습니다. 재활용하지 않으면 멀리 가능한 메모리

  • 을 복용, 작은 뷰 객체의
  • 많은 행을 스크롤 터치 이벤트를

    • 청취자 :의 ListView 그들을 포함과 함께 부작용을 많이 가지고 이에 국한되지 그 행이 다음 디스크에서 읽을되고 있으며,
    • 여러 호출을 반복 어린이 된 onMeasure에 반복적으로-팽창 재()리스트 뷰의 크기 뷰 계층을 그리기 및 추정 할 때

    기본적으로 ListViewAdapter 패러다임을 부적절하게 사용하여 메모리 및 CPU 시간을 낭비하고 있습니다.데이터에 Cursor, 표시하려면 TextViews, 표시하려면 ScrollView 및 (LinearLayout || RelativeLayout)이 필요합니다. 화면에 표시 할 수 없을 정도로 큰 경우 TextView을 누르고 있어야합니다.