万能RecyclerView的数据适配器BaseRecyclerViewAdapterHelper
2024-08-31 14:36:37
今天楼主才发现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网址。
最新文章
- BZOJ1057 [ZJOI2007]棋盘制作
- Codeforces 611d [DP][字符串]
- android开发 实现同时显示png/jpg 等bitmap图片还可以显示gif图片,有效防止OOM
- Spark Mllib逻辑回归算法分析
- 监控系统Opserver
- 变量类型、sprintf、不同类型之间的混合运算
- springMVC注解总结
- securecrt 方向键乱码解决
- MyBatis-DynamicSQL 动态SQL
- chmod chown
- CRM INBOX 查询结果增强字段
- .net core部署到Ubuntu碰到的问题
- Python模块——xml
- 解决Ubuntu无法进行SSH连接的问题(以及如何使用SSH)
- 揭开Redis的神秘面纱
- Python全栈-网络编程-TCP粘包
- Swift 类型转换
- APUE-文件和目录(二)函数access,mask,chmod和粘着位
- Drupal模块的安装方法
- php的静态变量的实现
热门文章
- 做了一个浏览指定文件格式的 TreeView(方便查看Source目录下的源码)
- ElasticSearch2.3.1环境搭建哪些不为人知的坑
- 简单介绍几种Java后台开发常用框架组合
- Git 备忘录
- mk、cd、pwd、ls、touch、vi、cat、cp、mv的使用及命令快捷方式
- node.js简单数据接口开发
- spring boot 2.x 系列 —— spring boot 整合 druid+mybatis
- Product Backlog:终极任务清单
- ES5_04_Array扩展
- 如何判断/检查一个集合(List<;string>;)中是否有重复的元素