认识RecyclerView
来源:互联网 发布:杀网络喷子的动漫 编辑:程序博客网 时间:2024/06/01 16:11
感觉最近需要很好的理解Google推出良久的控件,Google对其定位,我们暂且不谈,反正很是灵活和实用。粗浅认识,和ListView和GridView功能和原理“类似”。
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.support.v7.widget.RecyclerView
在使用RecyclerView的过程中,最明显与(ListView和GridView)的区别,是要设置布局管理器:
mRecyclerView.setLayoutManager(layoutManager);
目前可传入的参数有:
LinearLayoutManager StaggeredGridLayoutManager(瀑布流布局) GridLayoutManager
接下来就是介绍它对应的适配器,基本流程
(当然网上大家都有自己的方法,不一定都是这么做,仅供参考~)
- 基础适配器
- 依据业务继承基类适配器并封装
简单讲就是继承RecyclerView.Adapter <自定义的ViewHolder>,再具体就是
RecyclerView的源码中有:
public static abstract class Adapter<VH extends ViewHolder>
里面有具体的抽象方法,也是我们开发中需要实现的方法:
public abstract VH onCreateViewHolder(ViewGroup parent, int viewType);public abstract void onBindViewHolder(VH holder, int position);public abstract int getItemCount();
如果不按以上方法写该控件适配器,你也可以参考一下以下代码,这是比较中规中矩的写法,当然了,我最早也是
按以下这种早期网络资料上很“成熟”方式写适配器的。(以下只是示例,具体写的话,依据业务具体对待~)
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder > { private List <String> items; public MyAdapter (@NonNull List<String> dateItems ) { this.items = (dateItems != null ? dateItems : new ArrayList<String>()); } @Override public MyViewHolder onCreateViewHolder (ViewGroup viewGroup, int viewType) { View itemView = LayoutInflater.from( viewGroup.getContext ()).inflate(R.layout .item, viewGroup, false ); return new MyViewHolder(itemView); } @Override public void onBindViewHolder (MyViewHolder viewHolder, int position) { viewHolder.textView .setText(items.get (position)); } @Override public int getItemCount () { return (this.items != null) ? this .items. size() : 0 ; } protected final static class MyViewHolder extends RecyclerView.ViewHolder { protected TextView textView ; public MyViewHolder (View itemView) { super(itemView); this.textView = (TextView) itemView.findViewById (R. id.text); } } }
0 0
- 认识RecyclerView
- 认识RecyclerView
- RecyclerView初步认识
- 进一步认识RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- 解释一下关系数据库的第一第二第三范式?
- Tomcat --> Cannot create a server using the selected type
- LeetCode刷题(C++)——Merge k Sorted Lists(Hard)
- div有border时不能用offsetWidth获取div宽度
- linux(deepin15.4)下安装RabbitMQ消息队列(一)
- 认识RecyclerView
- StickyHeaderListView筛选器
- 企业转型 | 如何成为一家真正发挥大数据作用的 “数据驱动型公司”?
- Xcode清理缓存和垃圾文件
- LeetCode 120. Triangle
- eclipse中导入运行MyEclipse项目
- Python 3基础教程45-Matplotlib添加标签和标题描述
- wingide5-forlinux破解版和破解方法
- Web大前端时代之:HTML5+CSS3入门系列~初识HTML5