将替代ListView的RecyclerView 的使用详解(一)
程序员文章站
2024-03-05 22:35:07
recyclerview 是 android-support-v7-21 版本中新增的一个 widgets, 还有一个 cardview 会在下次介绍使用。官方介绍 rec...
recyclerview 是 android-support-v7-21 版本中新增的一个 widgets, 还有一个 cardview 会在下次介绍使用。官方介绍 recyclerview 是 listview 的升级版本,更加先进和灵活。我们写一个简单的实例例,来看一下究竟有多先进和灵活。
build.gradle 配置
android { compilesdkversion 'android-l' buildtoolsversion "20.0.0" defaultconfig { minsdkversion 'l' targetsdkversion 'l' ... } ... } dependencies { compile 'com.android.support:recyclerview-v7:+' ... }
开始
首先是布局文件中使用 recyclerview
<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=".myactivity" > <android.support.v7.widget.recyclerview android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" /> </relativelayout>
activity 中
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_my); recyclerview recyclerview = (recyclerview) findviewbyid(r.id.recyclerview); // 创建一个线性布局管理器 linearlayoutmanager layoutmanager = new linearlayoutmanager(this); // 设置布局管理器 recyclerview.setlayoutmanager(layoutmanager); // 创建数据集 string[] dataset = new string[100]; for (int i = 0; i < dataset.length; i++){ dataset = "item" + i; } // 创建adapter,并指定数据集 myadapter adapter = new myadapter(dataset); // 设置adapter recyclerview.setadapter(adapter); }
recyclerview 首先的一个特点就是,将 layout 抽象成了一个 layoutmanager,recylerview 不负责子 view 的布局,我们可以自定义 layoutmanager 来实现不同的布局效果,目前只提供了linearlayoutmanager。 linearlayoutmanager 可以指定方向,默认是垂直, 可以指定水平, 这样就轻松实现了水平的 listview。
接下来看 adapter 是怎么实现的
public class myadapter extends recyclerview.adapter<myadapter.viewholder> { // 数据集 private string[] mdataset; public myadapter(string[] dataset) { super(); mdataset = dataset; } @override public viewholder oncreateviewholder(viewgroup viewgroup, int i) { // 创建一个view,简单起见直接使用系统提供的布局,就是一个textview view view = view.inflate(viewgroup.getcontext(), android.r.layout.simple_list_item_1, null); // 创建一个viewholder viewholder holder = new viewholder(view); return holder; } @override public void onbindviewholder(viewholder viewholder, int i) { // 绑定数据到viewholder上 viewholder.mtextview.settext(mdataset); } @override public int getitemcount() { return mdataset.length; } public static class viewholder extends recyclerview.viewholder { public textview mtextview; public viewholder(view itemview) { super(itemview); mtextview = (textview) itemview; } } }
recyclerview 的另一个特点是标准化了 viewholder, 编写 adapter 面向的是 viewhoder 而不在是view 了, 复用的逻辑被封装了, 写起来更加简单。
以上所述是小编给大家介绍的将替代listview的recyclerview 的使用详解(一),希望对大家有所帮助
推荐阅读
-
将替代ListView的RecyclerView 的使用详解(一)
-
Android开发中RecyclerView组件使用的一些进阶技讲解
-
Android App开发中使用RecyclerView替代ListView的实践
-
将替代ListView的RecyclerView 的使用详解(一)
-
在Python的一段程序中如何使用多次事件循环详解
-
用宏将一个数字的奇数位和偶数位交换和使用宏实现两个数中求较大值
-
在Python的一段程序中如何使用多次事件循环详解
-
基于一致性hash算法(consistent hashing)的使用详解
-
基于一致性hash算法(consistent hashing)的使用详解
-
Java中一些基础概念的使用详解