2016-07-21 5 views
0

데이터베이스를 사용하여 RecyclerView를 채우고 싶습니다. 현재 데이터베이스를 사용하여 RecyclerView을 채울 수있는 inbuilt 어댑터가 없으므로 Shywim이 CursorRecyclerAdapter을 사용했습니다. 테스트 할 샘플 앱을 만들었고 정상적으로 작동했습니다. 내가 좋아하지 않았던 기능은 resultset에 _id 열을 가지고 있고 각 데이터베이스 작업에서 주로 삽입 및 삭제를 호출하는 것입니다. swapCursor(). SimpleCursorAdapter을 사용할 때 ListView와 동일합니다. Cursor를 직접 사용하는 대신 ArrayList를 데이터 세트로 사용하면 쿼리가 작성됩니다. 이 (내 가정) 일을데이터베이스에서 데이터를 가져 와서 RecyclerView에 바인딩하기 전에 ArrayList에 넣는 것이 더 좋습니까?

장점 :

  1. 더 이상 결과 집합에서 _id 열 필요.하지
  2. 데이터베이스에서 데이터를 가져 와서 ArrayList에 넣고 커서를 닫을 수 있습니다.
  3. 내가 추가 할 수 있습니다 각 데이터베이스 작업에 swapCursor()를 호출 필요 없음/ArrayList의에서 요소를 지정 제거하고 내가 swapCursor()notifyDataSetChanged() 뒤에 정확한 논리를 모르는 notifyDataSetChanged()

    호출합니다. 따라서 어느 것이 경량이고 효율적인지 결정할 수는 없습니다.

누군가가 이것을 경험했거나 이전에 이런 경험을 한 적이 있다면 제 생각을 분명히하십시오. 모든 수정 및 제안을 환영합니다.

+0

'CursorRecyclerAdapter'를 사용합니다.이 클래스는'CursorAdapter' /'ResourceCursorAdapter'를 생성하지 않을 것입니다. 사용자가'BaseAdapter' /'ArrayAdapter'를 사용하는 것이 더 낫고/더 쉬우면'ListView'에서'CursorAdapter'의 형제입니다. 와'SimpleCursorAdapter'를 사용하면'SimpleCursorAdapter'의 기능을 가진 그물에서'SimpleCursorRecyclerAdapter'를 찾을 수 있습니다.'SimpleCursorRecyclerAdapter' – pskink

+0

@pskink : 예, 사용하고 있습니다. 그러나 왜 결과 집합에'_id' 컬럼을 넣어야하는지 강요합니다. 이미 기본 키로 다른 컬럼이 있습니다. –

+0

그래서'_id'의 문제점은 무엇입니까? 그냥 query :'select my_other_primary_key_column as _id, other_column, yet_another_column where ... ' – pskink

답변

-1

내 이해에 따라 어레이 목록과 맞춤 어댑터를 사용하는 것이 더 좋습니다. 데이터베이스가 원활하게 작동 할 수 있도록

1) 커서는 각 거래 후 종료됩니다 :

는 다음과 같은 몇 가지 시나리오를 참조하십시오.

2) 커서를 닫으면 예외가 발생하지 않으므로 커서를 닫을 수 있습니다.

3) 각 행의보기를 쉽게 수정하고 원하는대로 사용자 지정 어댑터를 관리 할 수 ​​있습니다.

다른 많은 이유가 있지만 짧은 맞춤형 어댑터는 내 이해에 따라 커서 어댑터가 더 좋습니다.