让RecyclerView更通用

何为通用

用过RecyclerView的都知道它没有为我们提供像ListView中类似addHeaderView,addFooterView,setOnItemClickListener,setOnItemLongClickListener的接口,另外还有底部自动加载更多,这些都是列表使用中很常见的功能,所以如果我们使用RecyclerView来实现列表的话就需要自己实现这些功能。本文主要介绍这些通用功能的实现方式,使得RecyclerView使用起来和ListView一样方便。

RecyclerView子View宽度不充满父容器

今天用RecyclerView写了简单的例子,使用的是LinearLyaoutManager,子View采用的TextView,准备写个简单的List展示,我的RecyclerViewTextView的宽度布局都采用的是match_parent,结果显示出来之后发现子View的宽度压根就没有充满屏幕。之前也用过RecyclerView,但是没有遇到过这个问题,很不解啊~~~网上查阅之后说是在AdapteronCreateViewHolder方法中构造View的时候不能用如下方式:

1
View.inflate(mContext, R.layout.item_layout, null);

必须要换成下面的构造方式把parent带进去:

1
LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);

而我的Adapter中刚好就使用的是第一种方式,于是立马换成下面的第二种方式实现,运行看效果,果然充满了屏幕~~~这个问题还真是奇葩啊~

RecyclerView下拉刷新上拉加载

背景

作为ListViewGridView的替代者, RecyclerView以它的灵活性著称,而且有着更好更完善的缓存处理机制。但是在使用RecyclerVew的过程中有个很明显的问题:RecyclerView没有为开发者提供addHeadViewaddFooterView两个接口,这就为RecyclerView的下拉刷新和上拉加载实现增加了难度,本文就为大家介绍RecyclerView的下拉刷新和上拉加载的实现方式。

RecyclerView绘制原理

RecyclerView基本使用

1
2
3
4
5
6
7
8
9
10
//首先设置RecyclerView的布局管理模式
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new MyAdapter(getData());
//设置Item项的UI装饰器
mRecyclerView.addItemDecoration(new RecyclerItemDecoration(LinearLayoutManager.VERTICAL));
//设置Item项的不同操作的动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//设置数据开始装配
mRecyclerView.setAdapter(mAdapter);
RecyclerView原理分析
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×