Androidx Paing, как перезагрузить данные при возникновении ошибки - PullRequest
0 голосов
/ 25 марта 2020

Я использую AndroidX Paging для загрузки данных страницы. в нормальной ситуации это здорово. но при некоторых условиях, таких как ошибка сети, исключение, сбой загрузки данных. Я хочу загрузить данные на номер страницы с ошибкой. и он вызывается в других классах, а не в методе DataSource loadAfter.

только в примере Google paging это да, это плохо. в нормальной ситуации мы не будем этого делать. мы часто позволяем пользователям загружать их снова.

// this is the google sample code
if (response.isSuccessful) {
  val data = response.body()?.data
         val items = data?.children?.map { it.data } ?: emptyList()
         retry = null
         callback.onResult(items, data?.after)
         networkState.postValue(NetworkState.LOADED)
         } else {
              retry = {
                   loadAfter(params, callback)
          }
          networkState.postValue(
          NetworkState.error("error code: ${response.code()}"))
   }                          

Я читаю исходный код, один из способов, которым я хочу использовать callback.onReslult, пропуская пустой список, чтобы мой loadAfter мог работать. Но PagedStorage останавливает его, когда размер равен нулю.

void appendPage(@NonNull List<T> page, @NonNull Callback callback) {
        final int count = page.size();
        if (count == 0) {
            // Nothing returned from source, stop loading in this direction
            return;
        }
}

Может кто-нибудь дать мне какое-нибудь решение?

...