前言

大家都知道ListView在我们开发中很常用,Android5.0的到来,它给我们带来了一个替代

ListView的新的控件,也可以说是ListView的升级版,那就是RecyclerView。

接下来就让我们看一下,它们的作用的用法吧~!

RecyclerView

RecyclerView控件是比ListView更先进、灵活的版本。

该RecyclerView类通过以下几点简化了显示和处理大量的数据:

1.为每个条目位置提供了布局管理器(RecyclerView.setLayoutManager

RecyclerView提供这些内置的布局管理器:

LinearLayoutManager(用来)显示垂直或水平滚动的列表项

GridLayoutManager(用来)显示网格中的item(项)

StaggeredGridLayoutManager(用来)显示交错的网格item(项目)

可以通过继承RecyclerView.LayoutManager类来自定义自己的布局管理器。

2.为每个条目设置了操作动画(RecyclerView.setItemAnimator

使用步骤:

1.导入sdk/extras/android/support/v7/recyclerview/libs/android-support-v7-recyclerview.jar

2.xml配置

[html] view plaincopyprint?
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity"
  6. >
  7. <android.support.v7.widget.RecyclerView
  8. android:id="@+id/recycler_view"
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"
  11. android:scrollbars="vertical"
  12. tools:listitem="@layout/list_basic_item"
  13. />
  14. </RelativeLayout>

3.Activity代码

[java] view plaincopyprint?
  1. public class Main extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. // TODO Auto-generated method stub
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. // 获取RecyclerView对象
  8. final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
  9. // 创建线性布局管理器(默认是垂直方向)
  10. final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
  11. // 为RecyclerView指定布局管理对象
  12. recyclerView.setLayoutManager(layoutManager);
  13. // 创建Adapter
  14. final SampleRecyclerAdapter sampleRecyclerAdapter = new SampleRecyclerAdapter();
  15. // 填充Adapter
  16. recyclerView.setAdapter(sampleRecyclerAdapter);
  17. }
  18. }

4.Adapter代码

[java] view plaincopyprint?
  1. public class SampleRecyclerAdapter extends
  2. RecyclerView.Adapter<SampleRecyclerAdapter.ViewHolder>
  3. {
  4. private final ArrayList<SampleModel> sampleData = DemoApp.getSampleData(20);
  5. // 用于创建控件
  6. @Override
  7. public ViewHolder onCreateViewHolder(ViewGroup parentViewGroup, int i)
  8. {
  9. // 获得列表项控件(LinearLayer对象)
  10. // list_basic_item.xml布局文件中只包含一个<LinearLayer>标签,在该标签中包含
  11. // 了一个<TextView>标签
  12. //  item是LinearLayout对象
  13. View item = LayoutInflater.from(parentViewGroup.getContext()).inflate(
  14. R.layout.list_basic_item, parentViewGroup, false);
  15. return new ViewHolder(item);
  16. }
  17. // 为控件设置数据
  18. @Override
  19. public void onBindViewHolder(ViewHolder viewHolder, final int position)
  20. {
  21. //  获取当前item中显示的数据
  22. final SampleModel rowData = sampleData.get(position);
  23. //  设置要显示的数据
  24. viewHolder.textViewSample.setText(rowData.getSampleText());
  25. viewHolder.itemView.setTag(rowData);
  26. }
  27. @Override
  28. public int getItemCount()
  29. {
  30. return sampleData.size();
  31. }
  32. //  删除指定的Item
  33. public void removeData(int position)
  34. {
  35. sampleData.remove(position);
  36. //  通知RecyclerView控件某个Item已经被删除
  37. notifyItemRemoved(position);
  38. }
  39. //  在指定位置添加一个新的Item
  40. public void addItem(int positionToAdd)
  41. {
  42. sampleData.add(positionToAdd,new SampleModel("新的列表项" + new Random().nextInt(10000)));
  43. //  通知RecyclerView控件插入了某个Item
  44. notifyItemInserted(positionToAdd);
  45. }
  46. public static class ViewHolder extends RecyclerView.ViewHolder
  47. {
  48. private final TextView textViewSample;
  49. public ViewHolder(View itemView)
  50. {
  51. super(itemView);
  52. textViewSample = (TextView) itemView
  53. .findViewById(R.id.textViewSample);
  54. }
  55. }
  56. }

Android 5.0学习之ListView升级版RecyclerView相关推荐

  1. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

  2. android AVB2.0学习总结

    看了一阵子android AVB2.0相关的内容,准备梳理一下相关知识点.平时一般都用word整理,现在想想感觉还是用CSDN来整理看着直观些,方便自己查看的同时,也把自己学到的知识与其他人分享,共勉 ...

  3. Android 8.0学习(25)---系统的应用图标适配

    Android 8.0系统的应用图标适配 现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了.三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接 ...

  4. Android 8.0 学习(21)---Oreo的画中画模式学习

    Android 8.0 Oreo的画中画模式学习 本文主要是对谷歌开发者官方微信公众号发布的Android 8.0 Oreo 画中画模式一文的学习记录.  画中画模式Picture-in-pictur ...

  5. Android 8.0 学习(23)---recovery 流程分析

    Android 8.0 recovery 流程分析 这里主要分析non A/B模式下的recovery流程  A/B模式下的recovery在boot中  后续会不断补充,如果有疏漏或者错误的地方,请 ...

  6. Android 8.0 学习(3)---Android 8.0系统的应用图标适配

    其实在去年Android 8.0系统刚推出的时候,我就仔细翻阅过Google官方的功能变更文档.变更项着实不少,但是真正需要我们去进行功能适配的地方却并不多.总结了一下,最主要需要进行适配的地方有两处 ...

  7. ym—— Android 5.0学习之Tinting和Clipping

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 前言 Android 5.0的知识点讲完,下一篇要给大家带来一个综合例子的Demo,以 ...

  8. Android 5.0学习之动画

    前言 用户跟你的App进行交互时,Material Design中的动画给予用户动作的反馈和提供视觉的一致感. 包括之前我学习过的: Activity transitions(Activity过渡效果 ...

  9. Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决

    Android 8.0 WebView 拍照.简易预览.二维码扫描 各种问题解决 项目用到了WebView包装HTML5做成app使用,其中有页面用到了二维码和拍照上传功能.本人从未做过android ...

最新文章

  1. 命名实体识别新SOTA:改进Transformer模型
  2. CVPR 2020 | ActBERT: 自监督多模态视频文字学习
  3. VTK:vtkBalloonWidget用法实战
  4. boost::foreach模块右值 const_r的测试程序
  5. Go语言 模糊搜索实验(一)
  6. XGBoost 重要参数、方法、函数理解及调参思路(附例子)
  7. 继苹果亚马逊之后 微软加入1万亿美元市值俱乐部
  8. C 语言的数据类型宽度扩展
  9. mysql 存储过程的应用
  10. Oracle安装基本步骤
  11. Eclipse常用插件下载
  12. 客户关系管理CRM系统源码PHP开源软件源码
  13. Linux中xxd的简单应用
  14. distinct mysql性能_MySQL中distinct和group by性能比较
  15. 中国托盘拆卸工行业市场供需与战略研究报告
  16. EMV中易混淆概念总结
  17. 一键复制工具下载,有哪些好用的一键复制工具
  18. python处理\u200b
  19. 按键精灵的IsFileExit和ExistFile函数
  20. ExMobi®从入门到精通

热门文章

  1. 阿里云API网关相关操作
  2. 插值算法C实现(二元全区间)
  3. 鼠标事件响应函数之DOWN:画红色的点
  4. python调用gitlab api自动合并分支_Python3使用 GitLab API 进行批量合并分支
  5. 【Android】 01. APP 进程启动和 ActivityThread 的关系
  6. Java Magic. Part 5: SecurityManager
  7. asp.net % = #区别
  8. forfiles命令批量删除N天前文件
  9. nfs自动挂载报错及解决方法
  10. JAVA的面向对象编程总结(第一部分)~