当前位置: 移动技术网 > IT编程>移动开发>Android > 将替代ListView的RecyclerView 的使用详解(一)

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

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 的使用详解(一),希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网