2011-09-26 5 views
1

저는 Android에 비교적 익숙하지 않으며 다음과 같은 질문을 가지고 있습니다. ActivityList에 콘텐츠를 표시 할 장치의 로컬 DB가 있습니다. DB에 '이름, 성 등'과 같은 일반 정보가 포함 된 '사람'테이블이 있다고 가정 해 보겠습니다. 테이블의 모든 행은 ActivityList 내의 항목으로 표시되어야합니다.데이터를로드하여 ActivityList에 표시하는 방법은 무엇입니까?

ActivityList를 직접 테이블 데이터로 채울 수있는 일종의 어댑터가 있지만 그 방법은 무엇입니까? 시작할 때 모든 데이터를로드 한 다음 변경 사항을 적용 할 때마다 데이터를로드하는 대신 전체 세션 동안 데이터를 보유하고 필요에 따라 한 액티비티에서 다른 액티비티로 데이터를 전달 (또는 정적으로 설정)하는 것이 더 좋지 않습니까? 다른 활동으로?

정상적인 Java 응용 프로그램을 사용하려면 시작시 데이터를로드 한 다음로드 된 개체 (최소한 합리적인 데이터 세트의 경우)로 작업하십시오.

안드로이드 앱에 대해서도 그렇게 생각하지 않습니까?

나에게 맞는 모든 대답을 올릴 것입니다.

감사합니다. 슬래시

+0

이 튜토리얼은 http://thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/에서 확인하실 수 있습니다. 처음에는 onCreate()에서 사용하는 것이 좋습니다. 실세계 애플 리케이션과 많은 데이터를 얻으려면, 응답의 조언에 따라 AsyncTask를 사용하거나'ContentProvider'-and-'LoaderManager' 경로를 따라야합니다. –

+1

그리고 아니요, 모든 항목을로드하지 말고 여러 활동간에 전달하십시오. 'Adapter' 인스턴스를 사용하여 쿼리에서 (리스트) 뷰로 데이터를 바인딩하는 것이 좋습니다. –

+0

알았어, 조언을위한 thx! –

답변

1

나는 ContentProvider을 보았습니다.

데이터베이스를 쿼리 한 다음 CursorAdapter를 사용하여 ListView에 내용을 표시하는 데 사용할 수 있습니다.

+0

슬래시가 데이터베이스 애플리케이션을 다른 애플리케이션에 공개하기를 원치 않는 한 Slash가 ContentProvider를 사용해야하는 이유는 없습니다. 그는 여전히 데이터베이스에서 직접 커서를 가져올 수 있으며 ContentProvider의 오버 헤드없이 CursorAdapter를 사용할 수 있습니다. –

+0

'ContentProvider'는 특히 Android 3.x (또는 compat lib v4) LoaderManager 프레임 워크에서 응용 프로그램에서 개인적으로 사용되는 경우에도 클라이언트 코드를 크게 단순화 할 수 있습니다. Android를 시작할 때 CP로 시작하는 것은 과도한 일이지만 결국에는 사용자 정의 데이터베이스 클래스와 'ContentProvider' 인터페이스를 구현하는 데이터베이스 클래스간에 차이가 거의 없습니다. –

+0

@Maria 당신의 제안이 완전히 잘못되지 않았기 때문에 당신이 정말로 내 질문에 답하지 않은 것조차도 당신을 뽑았습니다. –

1

ListView를 사용하려면 어댑터를 사용해야합니다. 그래서, 그것은 필수입니다. 또한 액티비티에서 어댑터 데이터를 설정할 수 있습니다.

"감각"문제는 아마도 의미가 있습니다. 그러나 항상 그렇듯이 몇 가지 사항에 따라 다릅니다.

이 데이터는 응용 프로그램을 통해 사용됩니까? 그렇다면 그것을 한 번로드하고 어디서나 사용하는 것이 합리적입니다. 어떻게 할 것인가는 사용자의 요구, 정적 액세스 또는 데이터 전달에 달려 있습니다. 모두 작동해야합니다.

DB 액세스는 항상 비쌉니다. 그리고 많은 행이있는 경우 데이터베이스에서로드 프로세스가 매우 느려질 수 있습니다. 다시 한 번로드하고 모든 곳에서 사용하면 좋은 계획입니다.

하지만이 데이터를로드 할 때 UI 스레드를 차단하는 것에주의하십시오. UI 스레드에서 DB에 액세스해서는 안됩니다. 대신 작업자 스레드 또는 AsyncTask를 사용하십시오.

+0

예 응용 프로그램을 통해 데이터를 사용하려고하지만 그 중 일부만 사용하려고합니다. 예 : 자세히보기에서는 특정 테이블 행의 데이터 만 필요합니다. 따라서 시작시 모든 것을로드하는 것이 아니라 활동에 필요한 데이터 만로드하는 것이 더 효과적입니다. 그러나 그럼에도 불구하고 어떤 경우에는 그것이 합리적 일 수 있기 때문에 나는 당신을 뽑았습니다. –

관련 문제