android RecyclerView學習筆記

最近剛學了RecyclerView,就來總結下。

RecyclerView的任務僅僅只是回收和定位。要想其顯示數據還需要另外倆個類:Adpter子類以及ViewHolder子類。

ViewHolder只做一件事:容納View視圖。RecyclerView自身並不創建視圖,它創建的是ViewHolder,而ViewHolder引用着一個個ItemView。
典型的ViewHolder子類寫法:

private class MyHolder extends RecyclerView.ViewHolder{
        private TextView title;
        public MyHolder(View itemView){
        super(itemView);
        title=(TextView)itemView.findViewById(R.id.list_item_title);

}

RecyclerView.Adapter有三個抽象方法,使用時需覆蓋:
① int getItemCount()
該方法返回適配器持有集合中的數據總數,比如說傳給Adapter的List列表中的item總數。

② void onBindViewHolder (VH holder,int position)
該方法是一個回調方法,RecyclerView通常回調該方法來顯示數據。position參數可以指定當前的數據位置。

③ VH onCreateViewHolder(ViewGroup parent, int viewType)
該方法通常用來調用VH來裝載一個RecyclerView中的Item。

下面是一個例子:

   private class NoteBookAdapter extends RecyclerView.Adapter<MyHolder>{

    private NoteBookItem mBookItem;

    public  NoteBookAdapter(List<NoteBookItem> list){
        mNoteBookList=list;
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent,int type){      //創建ViewHolder容納View視圖
        View v=LayoutInflater.from(getActivity()).inflate(R.layout.note_book_item,parent,false);
        return new MyHolder(v);
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position){        //這裏通常用來綁定數據至模型層
        mBookItem=mNoteBookList.get(position);
        holder.bindItem(mBookItem);             //綁定數據到RecyclerView中的每一個Item
    }

    @Override
    public int getItemCount(){          //這裏用來返回List列表中的數目
        return mNoteBookList.size();

    }


}

最後再給RecyclerView添加適配器以及設置LayoutManager(LayoutManager還有許多第三方庫實現版本,這裏使用LinearLayout)如下:

List<NoteBookItem> bookItems=new ArrayList<>();
mRecyclerView.setAdpter(new NoteBookAdapter(new NoteBookAdapter(bookItems)));
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity));

還有最後別忘了添加RecyclerView的支持庫。

發佈了38 篇原創文章 · 獲贊 18 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章