万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper

今天楼主才发现github上有这么一个好用的开源代码,充满好奇心的楼主马上使用了,特地分享给大家。

此项目的github地址:

https://github.com/CymChad/BaseRecyclerViewAdapterHelper

项目优点:

 优化了Adapter代码,减少了代码量

添加Item事件
        Item的点击事件
        Item的长按事件
        Item子控件的点击事件
        Item子控件的长按事件

添加列表加载动画

一行代码轻松切换5种默认动画。

添加头部、尾部

一行代码搞定,感觉又回到ListView时代。

自动加载

上拉加载无需监听滑动事件,可自定义加载布局,显示异常提示,自定义异常提示。

添加分组

随心定义分组头部。

自定义不同的item类型

简单配置、无需重写额外方法。

设置空布局

比Listview的setEmptyView还要好用。

添加拖拽、滑动删除

开启,监听即可,就是这么简单。

分组的伸缩栏

比ExpandableListView还要强大,支持两级。

自定义ViewHolder

支持自定义ViewHolder,让开发者随心所欲。

使用集成步骤:

先在 build.gradle(Project:XXXX) 的 repositories 添加:

	allprojects {		repositories {			...			maven { url "https://jitpack.io" }		}	}

然后在 build.gradle(Module:app) 的 dependencies 添加:

	dependencies {	        compile ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE‘	}
VERSION_CODE:--替换: compile ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.17‘

MainActivity

package top.wintp.colorfuldemo;

import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.animation.BaseAnimation;

import java.util.ArrayList;

/**
 * 作者:  你的感冒清
 * <p>
 * qq:  337081267
 * <p>
 * CSDN:    http://blog.csdn.net/pyfysf
 * <p>
 * 个人博客:    http://wintp.top
 * <p>
 * 时间:   17-5-27
 * <p>
 * 邮箱:  [email protected]
 */
public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView = (RecyclerView) findViewById(R.id.rlv);

        //创建数据
        ArrayList<String> strings = new ArrayList<>();

        for (int i = 0; i < 100; i++) {
            strings.add("test" + i);
        }

        //创建数据适配器
        QuickAdapter myAdapter = new QuickAdapter(R.layout.item_recycler, strings);

        //设置布局管理者
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(myAdapter);

        //设置动画
//        myAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);

        //设置自定义动画
        myAdapter.openLoadAnimation(new BaseAnimation() {
            @Override
            public Animator[] getAnimators(View view) {
                return new Animator[]{
                        ObjectAnimator.ofFloat(view, "scaleY", 1, 1.1f, 1),
                        ObjectAnimator.ofFloat(view, "scaleX", 1, 1.1f, 1)
                };
            }
        });

        myAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                Toast.makeText(MainActivity.this, "itemclick", Toast.LENGTH_SHORT).show();
            }
        });

        myAdapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
                Toast.makeText(MainActivity.this, "setOnItemLongClickListener", Toast.LENGTH_SHORT).show();

                return false;
            }
        });

        myAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
            @Override
            public void onLoadMoreRequested() {
                Toast.makeText(MainActivity.this, "setOnLoadMoreListener", Toast.LENGTH_SHORT).show();

            }
        });

//        myAdapter.addFooterView();
//        myAdapter.addHeaderView();

    }

}

activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

</LinearLayout>

使用RecyclerView:需要添加依赖

在 build.gradle(Module:app) 的 dependencies 添加:

	dependencies {	           compile ‘com.android.support:recyclerview-v7:25.3.1‘

	}

数据适配器代码:

package top.wintp.colorfuldemo;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.ArrayList;

 /**

  *
  * 作者:  你的感冒清
  *
  * qq:  337081267
  *
  * CSDN:    http://blog.csdn.net/pyfysf
  *
  * 个人博客:    http://wintp.top
  *
  * 时间:   17-5-27
  *
  * 邮箱:  [email protected]
  */
public class QuickAdapter extends BaseQuickAdapter<String, BaseViewHolder> {

    public QuickAdapter(int item_recycler, ArrayList<String> strings) {
        super(item_recycler, strings);
    }

    @Override
    protected void convert(BaseViewHolder helper, String item) {
        helper.setText(R.id.tv_item, item);
    }
}

item布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:gravity="center"
        android:textColor="#f00"
        android:textSize="20sp"/>

</LinearLayout>

更多功能还请访问该项目的github网址。

原文地址:https://www.cnblogs.com/upuptop/p/11154595.html

时间: 2024-10-18 20:08:13

万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper的相关文章

让偷懒更彻底——用Butterknife 来为recyclerview 打造通用适配器(上)

背景 随着recyclerview 的越来越普及,其高度的易用性,让我们越来越爱不释手,当然网上也出现了很多类似的通用适配器,让我们更加方便的使用它,今天我们这里介绍一种新的recyclerview的通用适配器的实现思路--把recyclerview和ButterKnife结合起来使用(ps:因为公司开发一直使用butterknife,才有了这种想法). 首先贴上我的实现效果: 代码用法使用: ModelRecyclerAdapter adapter = new ModelRecyclerAda

RecyclerView的通用适配器

本来这一个主题应该早就写了,只是项目多,属于自己的时间不多,所以现在才开动!! 前一段时间写了一篇文章,是关于ListView,GriView万能适配器,没有看过的同学,可以先看看那篇文章,然后在来学习RecyclerView的话,会容易很多.链接http://www.cnblogs.com/huangjialin/p/7661328.html 当然,如果对RecyclerView基础不是了解的朋友,建议先去熟悉一下RecyclerView的基础知识! 闲话不多说,先简单的介绍一下这个Recyc

C#之数据适配器:DataAdapter对象

在ADO.NET中,能够用于执行命令操作的不但有有Command对象,还有DataAdapter对象,DataAdapter对象执行查询的返回数据将存储在DataSet对象中. DataAdapter对象概述 DataAdapter对象是DataSet和数据之间的桥梁,可以建立并初始化数据表对数据源执行SQL指令,与DataSet对象结合,提供DataSet对象存储数据,可视为DataSet对象的操作核心. 在使用DataAdapter对象时,只需要设置表示SQL命令和数据库连接的两个参数,就可

ListView和Adapter数据适配器的简单介绍

ListView 显示大量相同格式数据 常用属性: listSelector            listView每项在选中.按下等不同状态时的Drawable divider                ListView每项间的间隔Drawable dividerHeight        ListView每项间间隔的间隔高度 常用方法: setAdapter()                设置数据适配器 setOnItemClickListener()        设置每项点击事件

Android 快速开发系列 打造万能的ListView GridView 适配器

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写得最多的就是ListView,GridView的适配器吧,记得以前开发一同事开发项目,一个项目下来基本就一直在写ListView的Adapter都快吐了~~~对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder模式,其实大部分的代码基本都是类似的

listview必须设置数据适配器才能显示出来

listview必须设置数据适配器才能显示出来,哪怕只设置一个空的数据适配器都行: lvTabDetail.setAdapter(new NewsListAdapter()); class NewsListAdapter extends BaseAdapter{ @Override public int getCount() { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int p

无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

1.listview入门,自定义的数据适配器 <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&

Android必学之数据适配器BaseAdapter

.什么是数据适配器? 下图展示了数据源.适配器.ListView等数据展示控件之间的关系.我们知道,数据源是各种各样的,而ListView所展示数据的格式则是有一定的要求的.数据适配器正是建立了数据源与ListView之间的适配关系,将数据源转换为ListView能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性.这也体现了Android的适配器模式的使用.对于ListView.GridView等数据展示控件有多种数据适配器,本文讲解最通用的数据适配器——BaseAdap

(3)初识BaseAdapter用法--数据适配器-初解

一.创建MyAdapter类,继承BaseAdapter 二.创建MyAdapter构造方法,从数据源中获取数据-数据源与数据适配器关联起来 三.改返回值,没有利用到ListView的缓存机制 package com.dream.myapplication; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGr