RecyclerView使用方法

RecyclerView (回收、複用、高度解耦),能實現比ListView、GridView更豐富的效果

使用步驟:

Step1 : 佈局中添加RecyclerView

Step2 : 獲取RecyclerView實例

Step3 : 設置佈局管理器(控制顯示的方式:LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager)

Step4 : 設置數據Adapter

Step5 : 添加Item添加、刪除動畫(setItemAnimator)

Step6 : 添加分割線(addItemDecoration)

Step7 : 添加監聽事件(onClick等,可直接再onBindViewHolder中直接添加)


Step4  :  自定義Adapter:

/**
 * 繼承RecyclerView.Adapter
 * 1.重寫onCreateViewHolder()返回ItemViewHolder
 * 2.重新onBindViewHolder()綁定數據
 * 3.重寫getItemCount()返回記錄個數
 * 4.自定義ItemViewHolder繼承ViewHolder
 * 
 * @see 如果需要爲RecylerView添加Header或者Footer,需要額外處理以下細節:
 * 		1.重寫getItemViewType()方法,用於區分Item類型
 * 		2.onCreateViewHolder()、onBindViewHolder()需要區分處理
 * 		3.getItemCount()返回srcDatas.size()+headerCount + footerCount
 * 	
 * @author 健身小碼哥
 *
 */
public class CustomAdapter extends RecyclerView.Adapter<DataAdapter.CustomViewHolder>
{

	@Override
	public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
	{
		CustomViewHolder holder = new CustomViewHolder(LayoutInflater.from(context).
				inflate(R.layout.item, parent,
		    false));
	    return holder;
	}

	@Override
	public void onBindViewHolder(CustomViewHolder holder, int position)
	{
	    holder.titleTv.setText(mDatas.get(position));
	    holder.headImg.setImageResource(R.drawable.head);
	}

	@Override
	public int getItemCount()
	{
	    return mDatas.size();
	}

	class CustomViewHolder extends ViewHolder
	{

	    TextView titleTv;
	    ImageView headImg;

	    public MyViewHolder(View view)
	    {
		super(view);
		titleTv = (TextView) view.findViewById(R.id.title);
		headImg = (ImageView) view.findViewById(R.id.img_head)
	    }
	}
}


Step5  :  添加Item添加刪除效果(addItemDecoration)

* 可以參考  RecyclerViewItemAnimators , 提供了豐富的效果。

Step6  :  自定義分割線

* 繼承ItemDecoration,並根據佈局的特點進行重寫 (系統暫時未提供默認的實現類)

* 可參考 ItemDecoration的幾種實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章