寫過基礎的RecyclerView之后也是不明白為什么那么多人喜歡用RecyclerView,那么復雜,現在終于知道啦。
RecycleView是一種新的視圖組,目標是為任何基于適配器的視圖提供相似的渲染方式。該控件用于在有限的窗口中展示大量數據集,它被作為ListView和GridView控件的繼承者。
那么有了ListView、GridView為什么還需要RecyclerView這樣的控件呢?整體上看RecyclerView架構,提供了一種插拔式的體驗,高度的解耦,異常的靈活,通過設置它提供的不同LayoutManager,ItemDecoration , ItemAnimator實現令人瞠目的效果
你想要控制其顯示的方式,請通過布局管理器LayoutManager
· 你想要控制Item間的間隔(可繪制),請通過ItemDecoration
· 你想要控制Item增刪的動畫,請通過ItemAnimator
· 你想要控制其顯示的方式,請通過布局管理器LayoutManager
你想要控制點擊,長按事件,請自己寫
下面來寫一下RecyclerView的Item間的間隔(divier)的繪制,以及通過布局管理器LayoutManager來控制其顯示的方式。
并且自己來寫Item的點擊事件,首先點擊事件是寫在Adapter里面的,不多說,上圖。
interface OnItemClickListener{ void Click(View v ,int pos , String str);}PRivate OnItemClickListener listener;public void setOnItemClickListener(OnItemClickListener listener){ this.listener = listener;}準備工作就到這里了,然后在需要點擊監聽的地方調用方法就Ok了,在這里我們需要在item點擊調用,so
public MyViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.id_demo_text); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null){ listener.Click(v,getLayoutPosition(),mDatas.get(getLayoutPosition())); } } });}我們再次回到我們的activity代碼里面adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void Click(View v, int pos, String str) { Toast.makeText(MainActivity.this,"哈哈哈"+mDatas.get(pos),Toast.LENGTH_SHORT).show(); }});這樣,我們的item監聽就算完成了,運行起來發現界面非常的丑,沒有分割線divier,sorecycleView.addItemDecoration(new DividerItemDecoration(this,4));這個用來給我們的RecyclerView添加分割線的recycleView.setLayoutManager(new LinearLayoutManager(this));這個是RecyclerView的布局管理器,再次就不多試了,各位看官有需要自己嘗試。
新聞熱點
疑難解答