写过基础的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的布局管理器,再次就不多试了,各位看官有需要自己尝试。
新闻热点
疑难解答