万能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网址。
万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper的更多相关文章
- RecyclerView的通用适配器
本来这一个主题应该早就写了,只是项目多,属于自己的时间不多,所以现在才开动!! 前一段时间写了一篇文章,是关于ListView,GriView万能适配器,没有看过的同学,可以先看看那篇文章,然后在来学 ...
- ListView和Adapter数据适配器的简单介绍
ListView 显示大量相同格式数据 常用属性: listSelector listView每项在选中.按下等不同状态时的Drawable divider ...
- Android 常用数据适配器SimpleAdapter
在<Android 常用数据适配器ArrayAdapter>中介绍了ArrayAdapter数据适配器.但是存在一个缺陷,那就是条目的图标都固定相同,要显示每个条目的图标都不相同,那么使用 ...
- Android 常用数据适配器ArrayAdapter
接着上篇文章<Android 采用Layout Inflater创建一个View对象>,本文采用常用数据适配器ArrayAdapter 新建项目后,在layout文件夹下新建list_it ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- 数据读取器对象SqlDataReader与数据适配器对象SqlDataAdapter的使用
一.数据读取器对象SqlDataReader的使用 如何执行有查询结果集的select语句. 1.SqlDataReader对象的作用:当包含select语句的SqlCommad对象 ...
- Android 快速开发系列 打造万能的ListView GridView 适配器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...
- Android 数据适配器
把复杂的数据(数组.链表.数据库.集合等)填充到指定的视图界面上. arrayAdapter(数组适配器): 用于绑定一些格式单一的数据,数据源:数据或者集合. private Li ...
- listview必须设置数据适配器才能显示出来
listview必须设置数据适配器才能显示出来,哪怕只设置一个空的数据适配器都行: lvTabDetail.setAdapter(new NewsListAdapter()); class NewsL ...
随机推荐
- 开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石
微信于2013年开源的ibco库,是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上.libco在2013年的时候作为腾讯六大开源项目首次开源,ibco支持后台敏捷 ...
- QT5 屏幕旋转90度
主要思路是将所有项目界面加载到QGraphicsScene,再进行旋转操作.直接上代码#include <QApplication>#include <QGraphicsView&g ...
- 一键增加swap空间脚本
#!/bin/bash echo -e "\033[33m Your current swap is \033[0m" free -h mkdir /SwapDir cd /Swa ...
- Controls 属性与继承 TShape 类的小练习(使用TShape可以解决很多图形问题)
本例效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...
- 模态对话框测试 MFC中的模态对话框与非模态对话框
http://blog.csdn.net/u010839382/article/details/52972427 http://blog.csdn.net/u010839382/article/det ...
- Codility--- TapeEquilibrium
Task description A non-empty zero-indexed array A consisting of N integers is given. Array A represe ...
- 记一次 qW3xT.4,解决挖矿病毒。
最近感觉我的服务器特别卡,打开数据库都半天,刚开始以为网咯不好也没太在意. 利用top命令: 这时候问题出来了,最高cpu占用100%,那我用啥??? 根据进程id 一看究竟,ps -ef|grep ...
- ADMethodsAccountManagement 一些简单注释添加
using System; using System.Collections; using System.Text; using System.DirectoryServices.AccountMan ...
- DNS查询命令
dig(domain information groper)是一个在类Unix命令行模式下查询DNS,包括NS记录,A记录,MX记录等相关信息的工具 一.简单介绍使用dig命令查询DNS的方法 dig ...
- git日常使用整理
注册使用gitlab新用户 在gitlab注册完账号后,创建项目,会有如下提示 点击add an SSHkey 现实如下: 点击generate it,按照提示计算ssh key 把结果粘贴到gitl ...