分页库在recyclerview中不显示任何内容

时间:2019-03-23 12:05:20

标签: recycler-adapter android-room android-paging

我正在尝试使用分页库从会议室数据库中加载一堆列表,但是我不太了解,列表从未显示

我在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;
    }

0 个答案:

没有答案