библиотека подкачки не показывает ничего в программе - PullRequest
1 голос
/ 23 марта 2019

Я пытаюсь загрузить кучу списка из базы данных комнаты, с библиотекой подкачки, но почему-то, чего я не понимаю, список так и не появился

Я добавляю класс репозитория между dao и viewmodel, не уверен, что это проблема, но я настраиваю Paged.list и pagedlistbuilder там

Я также пытался поместить некоторую точку останова в pagedListAdapter, но он никогда не вызывал

DAO

    @Query("SELECT * FROM DictIndonesia")
    public abstract DataSource.Factory<Integer, DictIndonesia> getAllPaged();

СКЛАД

   public class DictRepository {
    PagedList.Config pagedListConfid;
    .....
    public DictRepository(Application application) {
        db = DictIndoDatabase.getINSTANCE(application);
        indDao = db.dictIdDao();
      .....
        pagedListConfid = (new PagedList.Config.Builder()
                .setEnablePlaceholders(true)
                .setPrefetchDistance(10)
                .setPageSize(20).build());
    }
 ......
   public LiveData<PagedList<DictIndonesia>> getAllWordPaged() {
        return new LivePagedListBuilder<>(
                indDao.getAllPaged(), pagedListConfid).build();
    }

ViewModel

  public LiveData<PagedList<DictIndonesia>> getAllWordPaged() {

        return dictRepository.getAllWordPaged();
    }

АДАПТЕР

public class WordIndAdapterPaged extends PagedListAdapter<DictIndonesia,WordIndAdapterPaged.WordHolder> {

    public WordIndAdapterPaged() {
        super(diffcallBack);
        }

    @NonNull
    @Override
    public WordHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler, parent, false);
             return new WordHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull WordHolder holder, int position) {
        holder.bindTo(getItem(position));
    }

    private static final DiffUtil.ItemCallback<DictIndonesia> diffcallBack = new DiffUtil.ItemCallback<DictIndonesia>() {
        @Override
        public boolean areItemsTheSame(@NonNull DictIndonesia oldItem, @NonNull DictIndonesia newItem) {
            return oldItem.getIdIndo() == newItem.getIdIndo();
        }

        @Override
        public boolean areContentsTheSame(DictIndonesia oldItem, @NonNull DictIndonesia newItem) {
            return oldItem == newItem;
        }
    };

    public class WordHolder extends RecyclerView.ViewHolder {
     ...............   

        WordHolder(View view) {
            super(view);
     ...............
        }

        void bindTo(DictIndonesia dictIndonesia) {
           word.setText(Html.fromHtml(dictIndonesia.getWord()));
            meaning.setText(Html.fromHtml(dictIndonesia.getMeaning()));
        }
}

Фрагмент


public class Fdashboard extends Fragment {
    @BindView(R.id.rv_global)
    RecyclerView rvGlobal;
      private Unbinder unbinder;
    WordIndAdapterPaged wordIndAdapterPaged;
    private WordViewModel wordViewModel;
    public Fdashboard() { }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_fdashboard, container, false);
        unbinder = ButterKnife.bind(this, v);
        wordViewModel = ViewModelProviders.of(getActivity()).get(WordViewModel.class);

  wordIndAdapterPaged = new WordIndAdapterPaged();

        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
        rvGlobal.setLayoutManager(layoutManager);
        rvGlobal.setAdapter(wordIndAdapterPaged);

    wordViewModel.getAllWordPaged().observe(this, dictIndonesias -> {
            wordIndAdapterPaged.submitList(dictIndonesias); //i think the problem maybe around here 
        });
        return v;
    }
...