Android開發(fā)筆記(二十五)paging

依賴

    def paging_version = "2.1.2"
    implementation "androidx.paging:paging-runtime:$paging_version" // For Kotlin use paging-runtime-ktx
    // alternatively - without Android dependencies for testing
    testImplementation "androidx.paging:paging-common:$paging_version" // For Kotlin use paging-common-ktx

在Room的基礎(chǔ)上:

  • 1.數(shù)據(jù)庫取出數(shù)據(jù)方法(Dao):
    @Query("SELECT * FROM WORD ORDER BY ID DESC")
    DataSource.Factory<Integer,Word> getAllWords();
  • 2.LiveData的獲得方式:
        allWordsPagedListLive = new LivePagedListBuilder<>(wordDao.getAllWords(), 2).build(); // 2為一次讀取的數(shù)據(jù)數(shù)量
  • 3.Adapter: 繼承PagedListAdapter
public class MyPagedAdapter extends PagedListAdapter<Word, MyPagedAdapter.MyViewHolder> {


    protected MyPagedAdapter() {
        super(new DiffUtil.ItemCallback<Word>() {
            @Override
            public boolean areItemsTheSame(@NonNull Word oldItem, @NonNull Word newItem) {
                return oldItem.getId() == newItem.getId();
            }

            @Override
            public boolean areContentsTheSame(@NonNull Word oldItem, @NonNull Word newItem) {
                return oldItem.getWord().equals(newItem.getWord());
            }
        });
    }

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

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        Word word = getItem(position);
        if (word == null){
            holder.tvE.setText("loadingddddddddddddddd");
            Log.i("nanmu","null");
        }else {
            holder.tvNum.setText(String.valueOf(position + 1));
            holder.tvE.setText(word.getWord());
//            holder.tvC.setText(word.getTranslate());
        }
    }


    static class MyViewHolder extends RecyclerView.ViewHolder{
        TextView tvNum, tvC, tvE;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            tvNum = itemView.findViewById(R.id.tv_num);
            tvC = itemView.findViewById(R.id.tv_c);
            tvE = itemView.findViewById(R.id.tv_e);

        }
    }
}
  • 4.更新方式:可選加回調(diào)
      allWordsPagedListLive.observe(this, new Observer<PagedList<Word>>() {
            @Override
            public void onChanged(final PagedList<Word> words) {
                adapter.submitList(words);
                words.addWeakCallback(null, new PagedList.Callback() {
                    @Override
                    public void onChanged(int position, int count) {
                        Log.d("mylog",String.valueOf(words));
                    }

                    @Override
                    public void onInserted(int position, int count) {

                    }

                    @Override
                    public void onRemoved(int position, int count) {

                    }
                });
            }
        });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容