데이터베이스를 사용하여 RecyclerView를 채우고 싶습니다. 현재 데이터베이스를 사용하여 RecyclerView
을 채울 수있는 inbuilt 어댑터가 없으므로 Shywim이 CursorRecyclerAdapter을 사용했습니다. 테스트 할 샘플 앱을 만들었고 정상적으로 작동했습니다. 내가 좋아하지 않았던 기능은 resultset에 _id
열을 가지고 있고 각 데이터베이스 작업에서 주로 삽입 및 삭제를 호출하는 것입니다. swapCursor()
. SimpleCursorAdapter
을 사용할 때 ListView와 동일합니다. Cursor를 직접 사용하는 대신 ArrayList를 데이터 세트로 사용하면 쿼리가 작성됩니다. 이 (내 가정) 일을데이터베이스에서 데이터를 가져 와서 RecyclerView에 바인딩하기 전에 ArrayList에 넣는 것이 더 좋습니까?
장점 :
- 더 이상 결과 집합에서
_id
열 필요.하지 - 데이터베이스에서 데이터를 가져 와서 ArrayList에 넣고 커서를 닫을 수 있습니다.
내가 추가 할 수 있습니다 각 데이터베이스 작업에
swapCursor()
를 호출 필요 없음/ArrayList의에서 요소를 지정 제거하고 내가swapCursor()
및notifyDataSetChanged()
뒤에 정확한 논리를 모르는notifyDataSetChanged()
호출합니다. 따라서 어느 것이 경량이고 효율적인지 결정할 수는 없습니다.
누군가가 이것을 경험했거나 이전에 이런 경험을 한 적이 있다면 제 생각을 분명히하십시오. 모든 수정 및 제안을 환영합니다.
'CursorRecyclerAdapter'를 사용합니다.이 클래스는'CursorAdapter' /'ResourceCursorAdapter'를 생성하지 않을 것입니다. 사용자가'BaseAdapter' /'ArrayAdapter'를 사용하는 것이 더 낫고/더 쉬우면'ListView'에서'CursorAdapter'의 형제입니다. 와'SimpleCursorAdapter'를 사용하면'SimpleCursorAdapter'의 기능을 가진 그물에서'SimpleCursorRecyclerAdapter'를 찾을 수 있습니다.'SimpleCursorRecyclerAdapter' – pskink
@pskink : 예, 사용하고 있습니다. 그러나 왜 결과 집합에'_id' 컬럼을 넣어야하는지 강요합니다. 이미 기본 키로 다른 컬럼이 있습니다. –
그래서'_id'의 문제점은 무엇입니까? 그냥 query :'select my_other_primary_key_column as _id, other_column, yet_another_column where ... ' – pskink