您的位置:首页 > 其它

灵活的组件-RecyclerView

2016-04-26 21:56 246 查看

RecyclerView

是一个比ListView,GridView更加灵活的组件。在Android5.0正式推出,后来推出了兼容包兼容到V7。


RecyclerView基本使用

① 添加RecyclerView依赖,com.android.support.v7.widget.RecyclerView
② RecyclerView也是一个适配器类型的组件,意味着它需要一个Adapter,并且布局的加载还需要一个LayoutManager。
③ RecyclerView中默认提供了三种布局管理器(LayoutManager)
1.LinearLayoutManager (线性)
2.GridLayoutManager     (表格)
3.StaggeredGridLayoutManager (瀑布流)
④ RecyclerView的Adapter需要继承自RecyclerView.Adapter<VH>,创建的时候还需要一个泛型,这个泛型继承自RecyclerView.ViewHolder。ViewHolder需要一个ItemView进行初始化,一般我们在构造中进行View的实例化。
⑤ 最后为RecyclerView设置LayoutManager,Adapter。


Change

RecyclerView在底层实现了布局的复用,但是有得必有失,RecyclerView失去了点击的监听,那么我们就需要自己来实现一下。
① 在我们使用LayoutInflater将View导入的时候,同时对View添加一个点击监听setOnClickListener(),实现onClick()方法,但是我们在onClick()方法中并不知道是哪一个View点击的。好在RecyclerView为我们提供了一个根据ChildView来获取我们ChildView在Adapter中位置的方法,RecyclerView.getChildAdapterPosition()。
② 接下来我们将点击事件通过接口回调传回我们的页面Activity or Fragment。
③ 我们根据点击事件对数据进行删除,增加...操作,我们发现RecyclerView的增加与删除并不像ListView,GridView那样暴力,它可以做差量更新,并且它还为我们实现了一套默认的变更动画。
④ 我们可以站在巨人的肩膀上完成以下我们对动画的定制,将默认实现中动画开启,动画实现的地方修改成我们想要的样子。
⑤ 在多布局加载方面,没有了getViewTypeCount(),意味着我们的RecyclerView不再限制我们ViewType的个数,我们只需要重写getItemViewType(),并在onCreateViewHolder中根据不同的type加载不同的布局。在onBindViewHolder中,根据不同的type,绑定不同的数据。
⑥ RecyclerView的GridLayoutManager可以合并单元格。manager.setSpanSizeLookUp(我们可以实现一个SpanSizeLookUp,在实现中根据不同的type去设置我们的每个item占用多少单元格)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: