Android RecyclerView的使用(一)
来源:互联网 发布:武装突袭3终极优化 编辑:程序博客网 时间:2024/05/23 01:20
Android RecyclerView的使用(一)
前言: RecyclerView提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现绚丽的效果。
- 通过布局管理器LayoutManager,可以控制其显示的方式;
- 通过ItemDecoration,可以控制Item间的间隔(可定制);
- 通过ItemAnimator,可以控制Item增删的动画;
- 至于点击、长按事件,RecyclerView并没有给我们提供相应的方法接口,需要我们自己实现。
本节将介绍如何使用RecyclerView来实现ListView的效果。
效果图:
第一步:activity_main.xml布局文件
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/></android.support.constraint.ConstraintLayout>
第二步:定义item的样式,item_single_textview.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#442F2F2F" android:layout_height="72dp"> <ImageView android:id="@+id/imageView" android:layout_margin="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textView" android:layout_gravity="center_vertical" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
第三步:自定义Adapter适配器
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { private LayoutInflater mInflater; private Context mContext; private List<String> mDatas; private int[] imgIds; public MyAdapter(Context context, List<String> datas, int[] imgIds) { this.mContext = context; this.mDatas = datas; this.imgIds = imgIds; mInflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.item_single_textview, parent, false); MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.textView.setText(mDatas.get(position)); holder.imageView.setBackgroundResource(imgIds[ position % 7]); } @Override public int getItemCount() { return mDatas.size(); }}class MyViewHolder extends RecyclerView.ViewHolder { ImageView imageView; TextView textView; public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); imageView = itemView.findViewById(R.id.imageView); }}
第四步:MainActivity.java
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> mDatas; private int[] imgIds; private MyAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDatas(); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); mAdapter = new MyAdapter(this, mDatas, imgIds); recyclerView.setAdapter(mAdapter); //设置RecyclerView的布局管理 LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(manager); //设置RecyclerView的item间分割线 recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST)); } private void initDatas() { imgIds = new int[]{R.mipmap.pic01, R.mipmap.pic02, R.mipmap.pic03, R.mipmap.pic04, R.mipmap.pic05, R.mipmap.pic06, R.mipmap.pic07}; mDatas = new ArrayList<>(); mDatas.add("亳州"); // 亳[bó]属于不常见的二级汉字 mDatas.add("大娃"); mDatas.add("二娃"); mDatas.add("三娃"); mDatas.add("四娃"); mDatas.add("五娃"); mDatas.add("六娃"); mDatas.add("七娃"); mDatas.add("喜羊羊"); mDatas.add("美羊羊"); mDatas.add("懒羊羊"); mDatas.add("沸羊羊"); mDatas.add("暖羊羊"); mDatas.add("慢羊羊"); mDatas.add("灰太狼"); mDatas.add("红太狼"); mDatas.add("孙悟空"); mDatas.add("黑猫警长"); mDatas.add("舒克"); mDatas.add("贝塔"); mDatas.add("海尔"); mDatas.add("阿凡提"); mDatas.add("邋遢大王"); mDatas.add("哪吒"); mDatas.add("没头脑"); mDatas.add("不高兴"); mDatas.add("蓝皮鼠"); mDatas.add("大脸猫"); mDatas.add("大头儿子"); mDatas.add("小头爸爸"); mDatas.add("蓝猫"); mDatas.add("淘气"); mDatas.add("叶峰"); mDatas.add("楚天歌"); mDatas.add("江流儿"); mDatas.add("Tom"); mDatas.add("Jerry"); mDatas.add("12345"); mDatas.add("54321"); mDatas.add("_(:з」∠)_"); mDatas.add("……%¥#¥%#"); }}
就这样几步我们就实现了一个与ListView类似的功能。当然,这里还有很多需要完善的地方,接下来的一节,我们将为RecyclerView添加分割线。
阅读全文
0 0
- Android RecyclerView的使用(一)
- RecyclerView的使用(一)
- RecyclerView的使用(一)
- Android RecyclerView使用(一) 基本使用
- android v7兼容包RecyclerView的使用(一)
- Android RecyclerView 梦幻般的控件 使用解析(一)
- 【Android】只为更方便--RecyclerView的使用(一)
- android中RecyclerView的简单使用(一)
- Android中的RecyclerView的使用(一)
- Android RecyclerView控件的使用(一)
- Android使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- Android RecyclerView使用详解(一)
- [Android]使用RecyclerView替代ListView(一)
- Android 中RecyclerView使用详解(一)
- [Android]使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- mybatis深入理解之#与$区别
- 《kafka中文手册》- 构架设计
- DNS服务器类型的比较:如何选择正确的DNS配置
- Rails on rails常用
- APP设计师必知:用户体验十大原则
- Android RecyclerView的使用(一)
- Gradle Permission denied解决方案
- 28. OTG调试
- 周末福利:Android 开发规范(完结版)
- 35 个 Java 代码性能优化总结
- [知了堂学习笔记]_JavaScript之number类型
- linux高性能服务器编程学习笔记七:高性能服务器程序框架
- Spring源码分析1 — 容器启动流程
- 网络性能测试:iperf适用于linux以及windows