今天楼主才发现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网址。

最新文章

  1. BZOJ1057 [ZJOI2007]棋盘制作
  2. Codeforces 611d [DP][字符串]
  3. android开发 实现同时显示png/jpg 等bitmap图片还可以显示gif图片,有效防止OOM
  4. Spark Mllib逻辑回归算法分析
  5. 监控系统Opserver
  6. 变量类型、sprintf、不同类型之间的混合运算
  7. springMVC注解总结
  8. securecrt 方向键乱码解决
  9. MyBatis-DynamicSQL 动态SQL
  10. chmod chown
  11. CRM INBOX 查询结果增强字段
  12. .net core部署到Ubuntu碰到的问题
  13. Python模块——xml
  14. 解决Ubuntu无法进行SSH连接的问题(以及如何使用SSH)
  15. 揭开Redis的神秘面纱
  16. Python全栈-网络编程-TCP粘包
  17. Swift 类型转换
  18. APUE-文件和目录(二)函数access,mask,chmod和粘着位
  19. Drupal模块的安装方法
  20. php的静态变量的实现

热门文章

  1. 做了一个浏览指定文件格式的 TreeView(方便查看Source目录下的源码)
  2. ElasticSearch2.3.1环境搭建哪些不为人知的坑
  3. 简单介绍几种Java后台开发常用框架组合
  4. Git 备忘录
  5. mk、cd、pwd、ls、touch、vi、cat、cp、mv的使用及命令快捷方式
  6. node.js简单数据接口开发
  7. spring boot 2.x 系列 —— spring boot 整合 druid+mybatis
  8. Product Backlog:终极任务清单
  9. ES5_04_Array扩展
  10. 如何判断/检查一个集合(List&lt;string&gt;)中是否有重复的元素