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

作者:by2n 时间:2023-12-05 07:57:00 

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 的使用详解(一)网站的支持!

来源:http://blog.csdn.net/by317966834/article/details/36205923

标签:listview,recyclerview
0
投稿

猜你喜欢

  • Spring配置shiro时自定义Realm中属性无法使用注解注入的解决办法

    2022-09-18 11:18:22
  • Java编程技巧:if-else优化实践总结归纳

    2022-04-14 09:04:20
  • MyBatis逆向工程基本操作及代码实例

    2022-12-19 04:09:27
  • Android网络开发中GET与POST请求详解

    2022-05-28 23:23:53
  • 如何将Object类转换为实体类

    2021-11-05 04:45:11
  • 字符串替换Replace仅替换第一个字符串匹配项

    2021-10-02 17:36:56
  • Java源码解析之可重入锁ReentrantLock

    2021-12-28 22:32:40
  • 在java代码中获取JVM参数的方法

    2022-08-15 01:05:43
  • Textvie实现左边图片和换行文字左对齐的方法

    2022-10-30 23:15:16
  • java统计字符串中指定元素出现次数方法

    2022-11-02 16:05:40
  • C#代码设置开机启动示例

    2021-12-16 17:53:07
  • Spring Aop 如何获取参数名参数值

    2022-09-08 17:00:41
  • Spring Boot缓存实战 Caffeine示例

    2021-11-15 17:39:34
  • 教你使用idea搭建ssm详细教程(Spring+Spring Mvc+Mybatis)

    2021-09-23 12:37:42
  • 浅析Java中如何实现线程之间通信

    2022-08-24 14:28:36
  • Android编程使用GestureDetector实现简单手势监听与处理的方法

    2021-11-18 17:07:43
  • SpringBoot 使用Mybatis分页插件实现详解

    2023-03-06 22:34:19
  • Android学习教程之日历控件使用(7)

    2023-01-06 23:10:46
  • Java 使用 FFmpeg 处理视频文件示例代码详解

    2023-03-19 00:54:37
  • Android基础教程数据存储之文件存储

    2023-08-05 18:18:10
  • asp之家 软件编程 m.aspxhome.com