欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

将替代ListView的RecyclerView 的使用详解(一)

程序员文章站 2024-03-04 19:34:36
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 的使用详解(一),希望对大家有所帮助