Модернизация не имеет ничего общего с PagingLibrary, вы будете обрабатывать модификацию, которую вы обрабатывали ранее.Если вы хотите отправить заголовок BasicAuth с модификацией, то вот код.
package net.simplifiedcoding.retrofitandroidtutorial.api;
import android.util.Base64;
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitClient {
private static final String AUTH = "Basic " + Base64.encodeToString(("belalkhan:123456").getBytes(), Base64.NO_WRAP);
private static final String BASE_URL = "http://simplifiedlabs.xyz/MyApi/public/";
private static RetrofitClient mInstance;
private Retrofit retrofit;
private RetrofitClient() {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(
new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.addHeader("Authorization", AUTH)
.method(original.method(), original.body());
Request request = requestBuilder.build();
return chain.proceed(request);
}
}
).build();
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
}
public static synchronized RetrofitClient getInstance() {
if (mInstance == null) {
mInstance = new RetrofitClient();
}
return mInstance;
}
public Api getApi() {
return retrofit.create(Api.class);
}
}
Приведенный выше код будет помещать один и тот же заголовок в каждый сделанный вами вызов на модернизацию.
То же самое вы будете использовать в таких методах, как loadInitials (), loadBefore () и loadAfter (), чтобы получить нужные вам страницы.
Например, ниже приведен мой интерфейс Retrofit API.
public interface Api {
@GET("answers")
Call<StackApiResponse> getAnswers(@Query("page") int page, @Query("pagesize") int pagesize, @Query("site") String site);
}
Здесь у меня есть метод вызова, который принимает параметры, такие как номер страницы, размер страницы для извлечения данных.
Точно так же, как вы будете вызывать его в методах подкачки.Ниже приведен пример:
//this will be called once to load the initial data
@Override
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull final LoadInitialCallback<Integer, Item> callback) {
RetrofitClient.getInstance()
.getApi().getAnswers(FIRST_PAGE, PAGE_SIZE, SITE_NAME)
.enqueue(new Callback<StackApiResponse>() {
@Override
public void onResponse(Call<StackApiResponse> call, Response<StackApiResponse> response) {
if (response.body() != null) {
callback.onResult(response.body().items, null, FIRST_PAGE + 1);
}
}
@Override
public void onFailure(Call<StackApiResponse> call, Throwable t) {
}
});
}
Надеюсь, это поможет.Если вы хотите получить пошаговое объяснение использования библиотеки подкачки Android с PageKeyedDataSource, выполните следующие действия: Учебное пособие по библиотеке подкачки Android .
А для изучения Retrofit и Building APIs Iопубликовали полную серию на YouTube.Вы можете проверить Руководство по модернизации Android .