Адаптер.submitData() не работает в Java для Android с использованием подкачки 3JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Адаптер.submitData() не работает в Java для Android с использованием подкачки 3

Сообщение Anonymous »

Я использую PagingDataAdapter для создания своего recyclerview, но почему-то в студии Android mainactivity появляется ошибка, что submitData не является функцией соответствующего адаптера.
это мой код для моего in Основная активность:

Код: Выделить всё

  viewModel = new ViewModelProvider(this ,
ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()))
.get(PhotoDataSourceFactory.class);
Lifecycle lifecycle = getLifecycle();
viewModel.setLifecycle(lifecycle);
recyclerView = findViewById(R.id.recyclerView);
PhotosAdapter adapter = new PhotosAdapter(Photos.CALLBACK);
recyclerView.setAdapter(adapter);
viewModel.getSearchResults().observe(this, listPagingData -> adapter.submitData(lifecycle, listPagingData));
Моя модель представления:

Код: Выделить всё

public class PhotoDataSourceFactory extends ViewModel {
Lifecycle lifecycle;
private static final String TAG = "PhotoDataSourceFactory";
public PhotoDataSourceFactory() {
}

public void setLifecycle(Lifecycle lifecycle){
this.lifecycle = lifecycle;
}

public LiveData
>> getSearchResults(){
PagingConfig config = new PagingConfig(20, 100, false);
Pager pager = new Pager(config, new Function0() {
@Override
public PagingSource invoke() {
return new PhotoSource();
}
});
return PagingLiveData.cachedIn(PagingLiveData.getLiveData(pager),lifecycle);
}

}

Мой адаптер:

Код: Выделить всё

public class PhotosAdapter extends PagingDataAdapter
 {
private static final String TAG = "PhotosAdapter";

public PhotosAdapter(@NotNull DiffUtil.ItemCallback diffCallback) {
super(diffCallback);
}

@NonNull
@Override
public PhotoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
View view = layoutInflater.inflate(R.layout.list_photos,parent,false);
return new PhotoViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull PhotoViewHolder holder, int position) {

Glide.with(holder.itemView.getContext()).load(getItem(position).getUrl()+".png").into(holder.photo);
holder.textView.setText(getItem(position).getTitle());
}

public class PhotoViewHolder extends RecyclerView.ViewHolder{
ImageView photo;
TextView textView;
public PhotoViewHolder(@NonNull View itemView) {
super(itemView);
photo = itemView.findViewById(R.id.imageView);
textView = itemView.findViewById(R.id.textView);
}

}
}

и Мой источник подкачки:

Код: Выделить всё

public class PhotoSource extends ListenableFuturePagingSource {
GetDataService dataService;
private static final String TAG = "PhotoSource";
@NotNull
@Override
public ListenableFuture loadFuture(@NotNull LoadParams loadParams) {
Executor executor = Executors.newSingleThreadExecutor();
dataService = RetrofitInstance.getInstance().create(GetDataService.class);
Long currentPage = loadParams.getKey()!=null ? loadParams.getKey() : (long)1;
ListenableFuture photos =  dataService.getAllPhotos(currentPage);
ListenableFuture page  = Futures.transform(photos, new Function() {
@NullableDecl
@Override
public LoadResult.Page apply(@NullableDecl List  input) {
return new LoadResult.Page(
Collections.singletonList(input),
currentPage  == 1 ? currentPage : currentPage-1,
input.isEmpty() ? null : currentPage+1
);
}}, executor);
Log.d(TAG, "loadFuture: Heererereree");
ListenableFuture partialLoad = Futures.catching(page, HttpException.class, LoadResult.Error::new, executor);
return Futures.catching(partialLoad, IOException.class, LoadResult.Error::new, executor);
}

@Nullable
@Override
public Long getRefreshKey(@NotNull PagingState pagingState) {
return null;
}

}
Я не понимаю, где я ошибаюсь, пытался много искать в stackoverflow, но все напрасно,
Мне не удалось почерпнуть ничего существенного из документации Google на странице 3 в Java, чтобы решить эту проблему. пытался найти видео о пейджинге 3 в Java, но, к сожалению, никто не рассмотрел пейджинг на Java.
если есть кто-нибудь, кто делал это (пейджинг 3) в Java, пожалуйста, если возможно, добавьте ссылку на ваш github тоже
заранее спасибо :)

Подробнее здесь: https://stackoverflow.com/questions/671 ... g-paging-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»