android RecylerView的用法
来源:互联网 发布:民族证券开户知乎 编辑:程序博客网 时间:2024/06/03 14:58
RecylerView是support-v7包中的新布局,类似ListView也是一个可以显示集合的布局。
RecylerView顾名思义,是一个可以回收的布局,实际上就是集合布局复用view
虽然设置稍微复杂一点,但是它能实现的功能很强大
简答来说,它既可以当作listview用也可以当gridview用
我们来看一下怎么用它
首先 在gradle中添加编译依赖
compile 'com.android.support:recyclerview-v7:24.2.1'
之后就可以正常使用了
在布局中添加
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.by.recyleviewtest.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:id="@+id/button" android:text="Button"/> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recylerview"/></LinearLayout>
在代码中获取并设置相关参数
<span style="white-space:pre"></span>RecyclerView view = (RecyclerView) findViewById(R.id.recylerview); view.setLayoutManager(new LinearLayoutManager(this)); adapter = new MyRecylerviewAdapter(getLayoutInflater(), list); view.setAdapter(adapter);
设置LayoutManager是设置RecylerView显示的布局,这里设置的是线性布局
也就是设置RecylerView横向或纵向排列分布
Adapter需要我们自己来写,继承自RecylerView.Adapter
public class MyRecylerviewAdapter extends RecyclerView.Adapter<MyRecylerviewAdapter.ViewHolder> { private List<String> list; private LayoutInflater inflater; public MyRecylerviewAdapter(LayoutInflater inflater, List<String> list) { this.inflater = inflater; this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.recylerview_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.textView.setText(list.get(position)); } @Override public int getItemCount() { return list == null ? 0 : list.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; public ViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.textView); } }}
adapter和BaseAdapter不同
需要自己实现三个方法,getItemCount, onBindViewHolder,onCreateViewHolder
getItemCount是获取要显示的view的个数
onBindViewHolder和onCreateViewHolder共同实现了BaseAdapter中的getView方法的功能,
严格来讲还要RecyclerViewHolder算进来
onCreateViewHolder是创建ViewHolder,获取要显示的Item的布局,并传递给ViewHolder
ViewHolder用来绑定控件
onBindViewHolder实现ViewHolder中控件的显示要显示的东西
像我上面那么写,就是很简单的实现了
每个Item显示的布局也很简单,只有一个TextView
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp"> <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" android:layout_gravity="center_horizontal"/></LinearLayout>
这样写完,就实现了基本的ListView显示列表的功能
我们来看看,我们还有什么可以设置的
<span style="white-space:pre"></span>LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); view.setLayoutManager(layoutManager);
这样设置就是横向的效果了
在来设置一下GridView的显示效果
GridLayoutManager layoutManager = new GridLayoutManager(this, 3); view.setLayoutManager(layoutManager);
是不是挺厉害的,不用改其他东西,就这么改一下,就能实现不同的显示方式
这还只是setLayoutManager
我们来看一下其他设置
view.setItemAnimator(new DefaultItemAnimator());设置这个的目的增加删除动画,这是默认动画,当然也可以自己编辑动画
- android RecylerView的用法
- RecylerView 的用法
- RecylerView的用法解析
- RecylerView的基本用法
- android RecylerView需要注意的问题
- Android强大的滚动控件--RecylerView
- Android RecylerView之万能适配器的实现
- RecylerView基本用法
- Android-RecylerView初识
- Android-RecylerView初识
- android v7 RecylerView
- Android-RecylerView初识
- Android-RecylerView初识
- Android高级学习之RecylerView和ListView的区别
- (转)Android高级学习之RecylerView和ListView的区别
- 关于RecylerView的初探
- recylerview的使用
- RecylerView 的应用
- 20161019 bootstrap中javascript插件 学习记录
- js数组排序 reverse()和sort()方法的使用,
- php + nginx 网站并发压力测试及优化
- java中的length属性和length()方法和size()方法
- 菜单侧滑以及fragment的嵌套
- android RecylerView的用法
- 统计输入偶数个数
- 欢迎使用CSDN-markdown编辑器
- H264--2--基础知识
- 面试干货
- 10_19
- new 二维数组
- CSS3属性选择器总结
- myeclipse+tomcat+maven+svn的开发环境配置(完整版)