• 万能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>
     * 邮箱:  pyfysf@163.com
     */
    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
      *
      * 邮箱:  pyfysf@163.com
      */
    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网址。

  • 相关阅读:
    redisLock redis分布式锁
    Mabitis中的#与$符号区别及用法介绍
    pring Scheduler定时器原理分析
    SpringBoot几种定时任务
    线程池的理解
    JVM的方法区和永久带是什么关系
    JVM老年代和新生代的比例
    IO 与 NIO
    对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解
    TCP滑动窗口控制流量的原理
  • 原文地址:https://www.cnblogs.com/shaofeer/p/11154595.html
Copyright © 2020-2023  润新知