Android 5.0学习之ListView升级版RecyclerView
前言
大家都知道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配置
- <RelativeLayout 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"
- tools:context=".MainActivity"
- >
- <android.support.v7.widget.RecyclerView
- android:id="@+id/recycler_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scrollbars="vertical"
- tools:listitem="@layout/list_basic_item"
- />
- </RelativeLayout>
3.Activity代码
- public class Main extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 获取RecyclerView对象
- final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
- // 创建线性布局管理器(默认是垂直方向)
- final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
- // 为RecyclerView指定布局管理对象
- recyclerView.setLayoutManager(layoutManager);
- // 创建Adapter
- final SampleRecyclerAdapter sampleRecyclerAdapter = new SampleRecyclerAdapter();
- // 填充Adapter
- recyclerView.setAdapter(sampleRecyclerAdapter);
- }
- }
4.Adapter代码
- public class SampleRecyclerAdapter extends
- RecyclerView.Adapter<SampleRecyclerAdapter.ViewHolder>
- {
- private final ArrayList<SampleModel> sampleData = DemoApp.getSampleData(20);
- // 用于创建控件
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parentViewGroup, int i)
- {
- // 获得列表项控件(LinearLayer对象)
- // list_basic_item.xml布局文件中只包含一个<LinearLayer>标签,在该标签中包含
- // 了一个<TextView>标签
- // item是LinearLayout对象
- View item = LayoutInflater.from(parentViewGroup.getContext()).inflate(
- R.layout.list_basic_item, parentViewGroup, false);
- return new ViewHolder(item);
- }
- // 为控件设置数据
- @Override
- public void onBindViewHolder(ViewHolder viewHolder, final int position)
- {
- // 获取当前item中显示的数据
- final SampleModel rowData = sampleData.get(position);
- // 设置要显示的数据
- viewHolder.textViewSample.setText(rowData.getSampleText());
- viewHolder.itemView.setTag(rowData);
- }
- @Override
- public int getItemCount()
- {
- return sampleData.size();
- }
- // 删除指定的Item
- public void removeData(int position)
- {
- sampleData.remove(position);
- // 通知RecyclerView控件某个Item已经被删除
- notifyItemRemoved(position);
- }
- // 在指定位置添加一个新的Item
- public void addItem(int positionToAdd)
- {
- sampleData.add(positionToAdd,new SampleModel("新的列表项" + new Random().nextInt(10000)));
- // 通知RecyclerView控件插入了某个Item
- notifyItemInserted(positionToAdd);
- }
- public static class ViewHolder extends RecyclerView.ViewHolder
- {
- private final TextView textViewSample;
- public ViewHolder(View itemView)
- {
- super(itemView);
- textViewSample = (TextView) itemView
- .findViewById(R.id.textViewSample);
- }
- }
- }
Android 5.0学习之ListView升级版RecyclerView相关推荐
- Android 8.0学习(32)---Android 8.0源码目录结构详解
Android 8.0源码目录结构详解 android的移植按如下流程: (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来. (2)正确挂载文件系统 ...
- android AVB2.0学习总结
看了一阵子android AVB2.0相关的内容,准备梳理一下相关知识点.平时一般都用word整理,现在想想感觉还是用CSDN来整理看着直观些,方便自己查看的同时,也把自己学到的知识与其他人分享,共勉 ...
- Android 8.0学习(25)---系统的应用图标适配
Android 8.0系统的应用图标适配 现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了.三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接 ...
- Android 8.0 学习(21)---Oreo的画中画模式学习
Android 8.0 Oreo的画中画模式学习 本文主要是对谷歌开发者官方微信公众号发布的Android 8.0 Oreo 画中画模式一文的学习记录. 画中画模式Picture-in-pictur ...
- Android 8.0 学习(23)---recovery 流程分析
Android 8.0 recovery 流程分析 这里主要分析non A/B模式下的recovery流程 A/B模式下的recovery在boot中 后续会不断补充,如果有疏漏或者错误的地方,请 ...
- Android 8.0 学习(3)---Android 8.0系统的应用图标适配
其实在去年Android 8.0系统刚推出的时候,我就仔细翻阅过Google官方的功能变更文档.变更项着实不少,但是真正需要我们去进行功能适配的地方却并不多.总结了一下,最主要需要进行适配的地方有两处 ...
- ym—— Android 5.0学习之Tinting和Clipping
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 前言 Android 5.0的知识点讲完,下一篇要给大家带来一个综合例子的Demo,以 ...
- Android 5.0学习之动画
前言 用户跟你的App进行交互时,Material Design中的动画给予用户动作的反馈和提供视觉的一致感. 包括之前我学习过的: Activity transitions(Activity过渡效果 ...
- Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决
Android 8.0 WebView 拍照.简易预览.二维码扫描 各种问题解决 项目用到了WebView包装HTML5做成app使用,其中有页面用到了二维码和拍照上传功能.本人从未做过android ...
最新文章
- 命名实体识别新SOTA:改进Transformer模型
- CVPR 2020 | ActBERT: 自监督多模态视频文字学习
- VTK:vtkBalloonWidget用法实战
- boost::foreach模块右值 const_r的测试程序
- Go语言 模糊搜索实验(一)
- XGBoost 重要参数、方法、函数理解及调参思路(附例子)
- 继苹果亚马逊之后 微软加入1万亿美元市值俱乐部
- C 语言的数据类型宽度扩展
- mysql 存储过程的应用
- Oracle安装基本步骤
- Eclipse常用插件下载
- 客户关系管理CRM系统源码PHP开源软件源码
- Linux中xxd的简单应用
- distinct mysql性能_MySQL中distinct和group by性能比较
- 中国托盘拆卸工行业市场供需与战略研究报告
- EMV中易混淆概念总结
- 一键复制工具下载,有哪些好用的一键复制工具
- python处理\u200b
- 按键精灵的IsFileExit和ExistFile函数
- ExMobi®从入门到精通
热门文章
- 阿里云API网关相关操作
- 插值算法C实现(二元全区间)
- 鼠标事件响应函数之DOWN:画红色的点
- python调用gitlab api自动合并分支_Python3使用 GitLab API 进行批量合并分支
- 【Android】 01. APP 进程启动和 ActivityThread 的关系
- Java Magic. Part 5: SecurityManager
- asp.net % = #区别
- forfiles命令批量删除N天前文件
- nfs自动挂载报错及解决方法
- JAVA的面向对象编程总结(第一部分)~