0

새로운 Android Architecture 구성 요소 (Room Persistance LibraryPaging Library)를 사용하여 모든 목록을 설정하려고합니다. 하지만 다음과 같은 문제에 직면하고 있습니다. 동일한 모델의 여러 가지 목록이있는 앱을 상상해보십시오. 각 목록에는 서버에 대한 자신의 URL 요청이 있습니다. 어떤 요소는 다른 응답에서 반복 될 수 있습니다. 그래서 나는 그 모델의 테이블에 각 응답의 모든 요소를 ​​삽입하고 업데이트해야한다고 생각합니다. 또한 각 요청에는 페이지가 있습니다. 예 : elements/famous/0, elements/famous/1. 페이지 1 응답이 목록 0의 요소를 포함하는 목록을 수신 때, 페이지에 의해 반환 된 요소를 추가해야 1.다른 요청에 따라 다른 페이징 목록이있는 페이징 라이브러리 및 룸

LivePagedListProvided을 반환

방 요청은 다음과 같이이다 :

@Query("SELECT * FROM elements") 
fun getElements(): LivePagedListProvider<Int, Model> 

때 일부 요소가 변경되거나 데이터베이스에 추가 된 요소가 쿼리에 영향을 주면 LivePagedListProvider 관측 값이 변경 사항을 제공하므로 UI가 자동으로 변경됩니다.

질문 : 페이징 라이브러리를 사용하여 다른 요청에 따라 다른 목록에 포함될 수있는 요소를 저장하고 검색하려면 어떻게해야합니까?

+0

예, 모든 요소를 ​​저장할 공간을 사용하고 싶습니다. –

답변

0

수신 된 데이터의 로컬 저장소에 하나의 테이블 만 사용하면 (서버에 대한 다른 요청으로 인해)이 테이블을 업데이트 할 때마다 모든 데이터 소스가 무효화되므로 자동 업데이트가 표시됩니다. 다른 요청에 대해서는 다른 테이블을 사용할 수 있지만 좋지는 않습니다.) 을 작성할 수 있다고 생각합니다. 이는 서버에서 요청한 요청의 차이를 나타내는 일부 조건입니다.

+0

결과 모델은 동일합니다. 하지만 각 요청에 다른 열을 추가해야합니다. 이는별로 좋지 않습니다. 최신 아이템, 인기있는 아이템, 멋진 아이템 등을 상상해보십시오. –

+1

@DamiaFuentes 그래서 각 요청 (날짜 별, 인기순, 굉장한)별로 정렬을 사용할 수 있지만 API가 해당 매개 변수를 반환하는 경우에만 가능합니다. 이러한 매개 변수가 없으면 각 요소에 대해 ID를 저장할 수있는 세 개의 추가 테이블 (가장 최근의 인기있는 테이블)을 만들 수 있습니다. 그런 다음 db에 대한 쿼리에서이 ID를 사용합니다. – Alex

+0

형식 쿼리 수가 늘어날 수 있으므로 세 개의 테이블을 갖는 것이 적합하지 않습니다. 데이터베이스의 저장된 ID 항목을 사용하여 쿼리 및 응답을 사용하여 테이블을 작성합니다. –