万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper

Posted upuptop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万能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网址。

 

以上是关于万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper的主要内容,如果未能解决你的问题,请参考以下文章

PowerfulRecyclerViewAdapter:一种RecyclerView的万能适配器实现

PowerfulRecyclerViewAdapter:一种RecyclerView的万能适配器实现

一个漂亮而强大的RecyclerView

RecyclerView的通用适配器

为RecyclerView打造通用Adapter 让RecyclerView更加好用

如何更新 RecyclerView 适配器数据