2016-10-15 5 views
0

내 친구로부터 CursorAdapter가 MVC 규칙을 따르지 않는다고 들었습니다. 모델을 통해서가 아니라 데이터베이스에서 직접 값을 가져옵니다. 또한 그는 사용자가 목록보기를 통해 항목을 반복 할 때마다 CursorAdapter가 dbs 쿼리를 반복해서 실행한다고 말했습니다. 따라서 CursorAdapter는 자주 사용되지 않습니다. 나는이 진술에 대해 매우 궁금해합니다. 누구든지 나를 도와 줄 수 있습니까? 그는 옳은가 틀린가? 그리고 그가 옳다면, 나는 대신 어떤 어댑터를 사용할 수 있습니까?ListView에 CursorAdapter를 사용하지 않을 때

+0

절대적으로 틀린데, 가능하면 google guys에서 'CursorAdapter' 또는'ResourceCursorAdapter' 또는 SimpleCursorAdapter'를 사용합니다. – pskink

+0

형님, 고마워요. –

답변

1

CursorAdapter 없습니다 ... 당신은 당신의 모델이 될 정의에 따라 달라집니다 모델

를 통해보기에 직접 데이터베이스에서 값을 가져 가라. Cursor 모델이 될 수 있습니다.이 경우 CursorAdapter은 모델에서 데이터를 가져 와서보기에 적용합니다.

친구가 사용자 정의 Java 클래스 세트로 정의 된 모델을 생각하고있을 수 있습니다. 이 경우 CursorAdapter은 해당 클래스에 대해 알지 못합니다.

그는 목록보기를 통해 매번 사용자 반복 처리 항목, CursorAdapter 다시 DBS 쿼리를 실행하고 다시

별로 말했다. CursorAdapter은 데이터베이스 쿼리 실행에 대해 아무 것도 모릅니다.

내가 생각할 수있는 유일한 시나리오는 쿼리에 1MB 이상의 큰 결과 집합이있는 경우 친구가 설명하는 것과 흡사합니다. 이 경우 Cursor은 일반적으로 수행하는 방식대로 전체 결과 집합을 보유하지 않습니다. 대신에 결과의 일부를 보유하고 사용자가 Cursor의 내용을 지나치게 스크롤하면 Cursor은 데이터베이스 I/O를 트리거하여 더 많은 결과를 가져오고 이전의 일부 메모리를 최소화하여 보유한 전체 메모리 양을 최소화합니다 Cursor에 의해). 그 결과

, CursorAdapter 자주 사용되지 않습니다

나는 자주 ArrayAdapter보다 사용된다는 말을하고, 더 많은 개발자가 이동할 때 모두가 일반적으로 호의에서 떨어지고있다 RecyclerViewRecyclerView.Adapter.

MVC/MVP/MVVM 아키텍처의 일부로 "실제"모델 (및 뷰 - 모델)을 사용하는 것과는 대조적으로 친구가 실제로 염려하는 것은 Cursor을 모델로 사용하는 것입니다. 물론 더 큰 프로젝트에서 들었을 때, Cursor은 대부분 CursorAdapter 또는 RecyclerView.Adapter으로 직접 사용되지 않고 다른 모델 객체를 채우기 위해 사용됩니다. 그러나 실제로 앱에 많이 의존합니다. 사소한 응용 프로그램은 특정 GUI 아키텍처를 엄격하게 준수 할 필요가 없으며 "사소한 응용 프로그램"과 "대규모 프로젝트"간의 구분선을 정의하기 어렵습니다.

그가 맞다면 대신 어떤 어댑터를 사용할 수 있습니까? 친구가 모델 자바 객체를 원하는 경우

은, 일반적으로는 ArrayAdapter 모델 개체의 컬렉션에서 얻을하는 방법을 알고있는 BaseAdapter 사용할 수 있습니다.또는 RecyclerView 영역에서 모델 개체 컬렉션의 구조를 알고있는 RecyclerView.Adapter을 사용합니다.

+0

고맙습니다. 내 하루를 보냈습니다. –

관련 문제