我正在使用 paging 3 在回收器视图中加载一些数据。我从服务器获取数据,然后将它们存储在本地数据库中。这是我的 DAO 界面:
@Dao
interface TicketDAO {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(model: TicketListModel)
@Query("SELECT * FROM ticket_list ORDER BY lastModifyDate DESC , lastModifyTime DESC")
fun getTickets(): PagingSource<Int, TicketListModel>
@Query("delete from ticket_list")
fun deleteAll()
}
Run Code Online (Sandbox Code Playgroud)
我假设这个接口作为我的数据源类。因为我也从服务器获取数据,所以我使用了这样的远程中介(顺便说一句,我使用 volley 从服务器获取数据):
@ExperimentalPagingApi
class TicketRemoteMediator(val ticketDatabase: TicketDAO, val context: Context) :
RemoteMediator<Int, TicketListModel>() {
private val scope = CoroutineScope(Dispatchers.Default)
private var page = 0
private var reachedEnd = false
override suspend fun load(
loadType: LoadType,
state: PagingState<Int, TicketListModel>
): MediatorResult {
return …Run Code Online (Sandbox Code Playgroud)