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

 更新时间:2016年07月20日 14:41:37   作者:by2n  
这篇文章主要介绍了将替代ListView的RecyclerView 的使用详解(一)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

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 的使用详解(一),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android中TextView自动适配文本大小的几种解决方案

    Android中TextView自动适配文本大小的几种解决方案

    在布局中使用的话,注意按照你最大的设备来设置字体大小,这样在小设备上回自动缩放,下面这篇文章主要给大家介绍了关于Android中TextView自动适配文本大小的几种解决方案,需要的朋友可以参考下
    2022-06-06
  • AndroidHttpClient详解及调用示例

    AndroidHttpClient详解及调用示例

    本文给大家介绍AndroidHttpClient结构、使用方式及调用示例详解,需要的朋友可以参考下
    2015-10-10
  • Android开发Jetpack组件Room使用讲解

    Android开发Jetpack组件Room使用讲解

    Room是一个数据库访问组件; 对SqLite数据库做了友好的封装,使我们在编码的时候,只需要注重逻辑的部分即可,数据库就交给Room去流畅的访问即可
    2022-08-08
  • Android实现音乐视频播放

    Android实现音乐视频播放

    这篇文章主要为大家详细介绍了Android实现音乐视频播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法

    c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法

    错误产生在我把方法从c语言转为c++语言后产生的,后来检查到这种错误是因为mk文件出错,加载c文件和加载c++的文件所用的代码不一样,下面请看
    2013-11-11
  • AndroidX下使用Activity和Fragment的变化详解

    AndroidX下使用Activity和Fragment的变化详解

    这篇文章主要介绍了AndroidX下使用Activity和Fragment的变化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Android获取SHA1的方法

    Android获取SHA1的方法

    这篇文章主要介绍了Android获取SHA1的方法,需要的朋友可以参考下
    2017-12-12
  • Android内存泄漏导致原因深入探究

    Android内存泄漏导致原因深入探究

    内存管理的目的就是让我们在开发过程中有效避免我们的应用程序出现内存泄露的问题。内存泄露相信大家都不陌生,我们可以这样理解:没有用的对象无法回收的现象就是内存泄露
    2023-02-02
  • android主线程和子线程之间消息传递详解

    android主线程和子线程之间消息传递详解

    这篇文章主要介绍了android主线程和子线程之间消息传递详解,主线程发送消息到子线程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android中的ViewPager视图滑动切换类的入门实例教程

    Android中的ViewPager视图滑动切换类的入门实例教程

    Android中ViewPager通常与Fragments组件共同使用来实现视图切换功能,本文就带大家一起来学习Android中的ViewPager视图滑动切换类的入门实例教程:
    2016-06-06

最新评论