RecyclerView的简单使用

RecycleView简介

官方对RecyclerView的描述是

A flexible view for providing a limited window into a large data set.

RecycleView是在有限的窗口中大量显示数据集的灵活view
RecyclerView是support.v7包中的控件,可以说是ListView和GridView的增强升级版,个人觉得可以替代ListView

可以实现
- ListView的功能(包括横向)
- GridView的功能
- 横向ScrollView
- 瀑布流
- 方便添加animation

RecyclerView高度解耦,随意定制。它提供的LayoutManager,ItemDecoration,ItemAnimator可以让开发者自定义奇特的效果,
但是RecyclerView的点击方法是需要自己实现的

基本的使用方法

gradle导包

 compile 'com.android.support:recyclerview-v7:23.4.0'

在layout布局文件中加入

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycle_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>

OnCreate中几个关键函数

//设置布局管理器,必须
mRecyclerView.setLayoutManager(layout);
//设置RecycleView的Adapter,必须
mRecyclerView.setAdapter(adapter)
//设置分割线,非必须
mRecyclerView.addItemDecoration(ItemDecoration);
//设置item的增删动画,非必须
mRecyclerView.setItemAnimator(animator);

新建布局recycleview_item,以TextView为根节点

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/recycle_textview"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:text="TEXT"
    android:textSize="20sp"/>

新建一个RecyclerView.Adapter适配器MyRecycleViewAdapter

package edu.fjnu.birdie.demo;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

/**
 * Created by edge0 on 2017/5/17.
 */
public class MyRecycleViewAdapter extends RecyclerView.Adapter<MyRecycleViewAdapter.MyViewHolder> {

    private Context mContext;
    private List<String> mList;

    public MyRecycleViewAdapter(Context context, List<String> list) {
        this.mContext = context;
        this.mList = list;
    }

    @Override
    public MyRecycleViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //此处动态加载ViewHolder的布局文件并返回holder
        View view = LayoutInflater.from(mContext).inflate(R.layout.recycleview_item, parent, false);
        MyViewHolder mHolder = new MyViewHolder(view);
        return mHolder;
    }

    @Override
    public void onBindViewHolder(MyRecycleViewAdapter.MyViewHolder holder, int position) {
        //此处设置Item中view的数据
        holder.mTextView.setText(mList.get(position));
    }

    @Override
    public int getItemCount() {
        //生成的item的数量
        return mList.size();
    }

    //Item的ViewHolder
    // item内部布局控件的id绑定
    class MyViewHolder extends RecyclerView.ViewHolder{

        TextView mTextView;
        public MyViewHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(R.id.recycle_textview);
        }
    }
}

Activity中OnCreate中加入

RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recycle_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(layoutManager);
initData();//简单的初始化数据

//实例化并传输数据给adapter
MyRecycleViewAdapter mAdapter = new MyRecycleViewAdapter(getApplicationContext(), list);
mRecyclerView.setAdapter(mAdapter);

RecyclerView.jpg

一些其他设置

RecyclerView的点击事件

一开始说到RecyclerView需要我们自己实现点击事件
因为他没有没有提供类似setOnItemClickListener()这样的注册监听器方法
所以我们自己给子项view注册响应事件

我们只需要在Adapter的onBindViewHolder方法里添加

public void onBindViewHolder(MyRecycleViewAdapter.MyViewHolder holder,final int position) {

        holder.mTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(mContext, "item"+position,Toast.LENGTH_SHORT).show();
            }
        });
    }

点击.jpg

RecycleView的强大之处也在这里,就算是ViewHolder里的View多层嵌套了几个view都可以轻松的实现点击事件

Item间分割线
  1. 只要在item的layout里加上
 android:layout_marginTop="3dp"

2.使用ItemDecoration
详细的使用方法参考这篇文章:
RecyclerView之ItemDecoration由浅入深
这里就不加赘述,这篇文章写的非常清楚
主要就是对列表的分割线进行自定义,功能非常丰富

Item显示方式

GridLayout

只需要将 layoutManager

LinearLayoutManager layoutManager = new LinearLayoutManager(this);

改为

GridLayoutManager layoutManager = new GridLayoutManager(this,3);

就可以实现3列的网格布局

Grid.jpg
瀑布流
同上 修改layoutManager为StaggeredGrid

StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));

以上就是RecyclerView的简单使用
RecyclerView还有很多其他的用法
比如
- 高级效果 波纹点击

  • 添加 删除时动画

  • 与某些View结合使用

  • 滑动监听addOnScrollListener 可实现下拉刷新等

  • ItemTouchHelper实现item删除,互相拉动
    有兴趣的同学可以自己去查询资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RecycleView是一种在Android中常用的列表控件,它允许你在列表中显示大量数据,而不会导致应用程序变得卡顿或崩溃。它使用了一个称为“回收利用”的概念,这意味着当列表不再需要时,它可以将某些元素从内存中释放出来,以节省内存空间。 以下是使用RecycleView的一些基本步骤: 1. 添加依赖项:首先,你需要在你的项目中添加一个recyclerView的依赖项。如果你使用的是Gradle构建系统,可以在build.gradle文件中添加以下代码: ```groovy dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' // 使用最新版本 } ``` 2. 创建布局文件:在你的布局文件中创建一个新的recyclerView布局文件。这个文件应该包含一个或多个用于显示数据的视图。 3. 创建适配器:适配器是连接recyclerView和数据源的关键组件。你需要创建一个适配器类,该类继承自RecyclerView.Adapter,并实现其中的一些接口方法。 4. 绑定适配器:最后,你需要将适配器绑定到recyclerView上。这通常在Activity或Fragment的onCreate方法中完成。你可以使用setAdapter方法将适配器绑定到recyclerView上。 以下是一个简单的示例代码,演示如何使用RecycleView: 1. 在布局文件中添加一个recyclerView: ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 2. 在Activity或Fragment中创建一个RecyclerViewAdapter: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<String> data; // 数据源 public MyAdapter(List<String> data) { this.data = data; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_item_layout, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.textView.setText(data.get(position)); } @Override public int getItemCount() { return data.size(); } public static class MyViewHolder extends RecyclerView.ViewHolder { private TextView textView; // 自定义视图组件 public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); // 获取自定义视图组件并设置文本 } } } ``` 3. 在Activity或Fragment的onCreate方法中绑定适配器: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); MyAdapter adapter = new MyAdapter(myData); // myData是数据源,例如一个List<String>对象 recyclerView.setAdapter(adapter); // 将适配器绑定到recyclerView上 ``` 这就是使用RecycleView的基本步骤。你可以根据需要自定义布局和适配器,以适应你的应用程序需求。RecycleView提供了许多高级功能,如自动布局、可点击边距等,可以根据需要进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值