basequickadapter详解_万能适配器BaseQuickAdapter简单使用

2023-05-16

BaseQuickAdapter——RecyclerView通用适配器

RecyclerView是Android L版本中新添加的一个用于取代ListView的SDK,具有灵活性和可替代性比ListView更好,RecyclerView同样也用到适配,作为开发者,我们希望有一款通用的适配。

BaseQuickAdapter 就是一款为Android开发者打造的针对繁琐的适配器的构建的快速开源项目。

BaseQuickAdapter 特点

可以减少重复代码

添加Item点击事件,长按事件以及子控件的点击事件

添加头部、尾部、下拉刷新、上拉加载涵盖多种动画处理,没有更多数据处理

添加Item滑动动画。多种动画切换

添加新增删除Item动画

网格、列表、流式布局随意切换

添加空布局(列表无数据时,显示更加友好)

拖拽和侧滑删除

支持多类型布局

字母导航

BaseQuickAdapter 使用

导入依赖

由于BaseQuickAdapter 各种版本比较多,此处我们使用 BaseRecyclerViewAdapterHelper

先在 build.gradle(Project:XXXX) 的 repositories 添加:

allprojects {        repositories {            ...            maven { url"https://jitpack.io"}        }    }

然后在 build.gradle(Module:app) 的 dependencies 添加:

dependencies {            compile'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28'}

# gradle//最新代码还没更新到 jcenter 仓库,推荐使用方法二依赖项目compile'com.github.baserecycleradapter:library:1.1.0'# 下载源码依赖

使用

首先需要继承BaseQuickAdapter 然后 BaseQuickAdapter 第一个泛型Status是数据实体类型,第二个BaseViewHolder是ViewHolder其目的是为了支持扩展ViewHolder

mRecyclerView.setAdapter(mAdapter =newBaseQuickAdapter(R.layout.rv_item, getItemDatas()) {@Overrideprotectedvoidconvert(finalBaseViewHolder helper, String item){        helper.setText(R.id.tv_item_text, item);    }});

Item点击 长按事件

//Item 点击事件setOnItemClickListener(intviewId, AdapterView.OnItemClickListener listener)//长按事件setOnItemLongClickListener(intviewId, AdapterView.OnItemLongClickListener listener)

子控件的点击事件

helper.setOnClickListener(R.id.tv_item_text,newView.OnClickListener() {@OverridepublicvoidonClick(View v){//事件处理}  });

添加头部、尾部

//头部mAdapter.addHeaderView();    View headerView=getLayoutInflater().inflate(R.layout.rv_header,null);    headerView.setLayoutParams(newViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));    mAdapter.addHeaderView(headerView);//尾部mAdapter.addFooterView();

添加Item动画

//一行代码开启动画 默认CUSTOM动画mAdapter.openLoadAnimation(BaseQuickAdapter.CUSTOMIN);# 更换动画//ALPHAIN, SCALEIN, SLIDEIN_BOTTOM, SLIDEIN_LEFT, SLIDEIN_RIGHT, //SLIDEIN_LEFT_RIGHT, SLIDEIN_BOTTOM_TOP, CUSTOMINmAdapter.openLoadAnimation(BaseQuickAdapter.CUSTOMIN);//自定义mAdapter.openLoadAnimation(newBaseAnimation[]{newBaseAnimation() {            @OverridepublicAnimator[] getAnimators(View view) {returnnewAnimator[]{ObjectAnimator.ofFloat(view,"alpha",0.5f,1.0f),                        ObjectAnimator.ofFloat(view,"scaleX",0.5f,1.0f)};            }        }});

设置加载更多

mAdapter.setOnLoadMoreListener(newBaseQuickAdapter.RequestLoadMoreListener() {@OverridepublicvoidonLoadMoreRequested(){        }    });

加载更多 加载失败 状态

mShowType++;if(mShowType ==2) {        mHandler.postDelayed(newRunnable() {@Overridepublicvoidrun(){//加载失败,点击重试mAdapter.loadMoreFail();            }        }, DELAY_MILLIS);    }elseif(mShowType >=4) {        mHandler.post(newRunnable() {@Overridepublicvoidrun(){//加载完成mAdapter.loadMoreEnd();            }        });    }else{        mHandler.postDelayed(newRunnable() {@Overridepublicvoidrun(){                mAdapter.addData(addDatas());//加载更多完成mAdapter.loadMoreComplete();            }        }, DELAY_MILLIS);    }

流式布局的简单实现

mRecyclerView.setLayoutManager(newFlowLayoutManager());

多布局

package com.example.administrator.gaoqizhong.ui.adapter;import android.widget.ImageView;import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;import com.chad.library.adapter.base.BaseViewHolder;import com.example.administrator.gaoqizhong.R;import com.example.administrator.gaoqizhong.data.beans.Info;import com.squareup.picasso.Picasso;import java.util.List;/** * Created by Administrator on 2018/6/12 0012. * * 继承自万能适配器 BaseMultiItemQuickAdapter , 需要实体类实现 MultiItemEntity 接口 * */public class MyMultiAdapter extends BaseMultiItemQuickAdapter{ private Listlist; public MyMultiAdapter(List data) {

super(data);

addItemType(0, R.layout.layout_item);

addItemType(1, R.layout.layout_item2);

addItemType(2, R.layout.layout_item3);

this.list = data;

}

@Override

public int getItemViewType(int position) {

int itemType = 0;

if(null == list.get(position).getThumbnail_pic_s02() && null == list.get(position).getThumbnail_pic_s03()){

itemType = 0;

}else if(null == list.get(position).getThumbnail_pic_s03()){

itemType = 1;

}else{

itemType = 2;

}

return itemType;

}

@Override

protected void convert(BaseViewHolder helper, Info.ResultBean.DataBean item) {

switch (helper.getItemViewType()){

case 0:

helper.setText(R.id.author_name,item.getTitle());

Picasso.with(mContext).load(item.getThumbnail_pic_s()).into((ImageView) helper.getView(R.id.img));

break;

case 1:

helper.setText(R.id.author_name,item.getTitle());

Picasso.with(mContext).load(item.getThumbnail_pic_s()).into((ImageView) helper.getView(R.id.img));

Picasso.with(mContext).load(item.getThumbnail_pic_s02()).into((ImageView) helper.getView(R.id.img2));

break;

case 2:

helper.setText(R.id.author_name,item.getTitle());

Picasso.with(mContext).load(item.getThumbnail_pic_s()).into((ImageView) helper.getView(R.id.img));

Picasso.with(mContext).load(item.getThumbnail_pic_s02()).into((ImageView) helper.getView(R.id.img2));

Picasso.with(mContext).load(item.getThumbnail_pic_s03()).into((ImageView) helper.getView(R.id.img3));

break;

}

}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

basequickadapter详解_万能适配器BaseQuickAdapter简单使用 的相关文章

  • IDEA中设置Run Dashboard

    微服务项目的开发过程中 xff0c 工程会非常多 xff0c 经常要启动很多个服务 xff0c 才能完成一项测试 启动的多了 xff0c 容易开发者带来错乱的感觉 xff0c 很不方便管理 在idea作为开发工具时 xff0c 推荐一个很好
  • 雅士利处理器软件_Ashly 雅士利4.8SP数字音频处理器

    Ashly 雅士利 4 8SP 数字音频处理器 产品描述 美国ASHLY 雅士尼 Protea4 8SP是4段输入 8段输出数字信号处理器 xff0c 具有能够精确而又广泛的对音频进行控制的功能 通过前面板界面上的功能按钮 xff0c 允许
  • mysql错误码为1045_mysql错误代码1045的原因及解决方案

    mysql错误代码1045的原因及解决方案 mysql错误代码1045你的电脑会出现吗 xff1f 是什么原因导致的这个问题 xff1f 本文是小编精心编辑的 xff0c mysql错误代码1045的原因及解决方案希望能帮助到你 xff01
  • oracle 视图定时刷新,物化视图每天自动刷新2次的方法

    有用过ORCLE 物化视图的朋友 xff0c 请帮个忙 xff0c 我想每天刷新两次 xff0c 比如中午十二点 xff0c 晚上七点 xff0c 不知道怎么写 xff0c 急用 xff01 你这个需要 xff0c 可以这样实现 建一个表
  • 怎样删除计算机Windows7自带的游戏,win7自带游戏如何卸载?win7卸载自带游戏的步骤...

    安装win7纯净版32位系统后 xff0c 自带有一些小游戏 xff0c 比如游戏纸牌 扫雷等等游戏 平时很少玩到这些游戏 xff0c 放着会占用内存 那么win7自带游戏如何卸载 xff1f 其实卸载方法很简单 xff0c 大家只要阅读下
  • ipa文件包获取服务器地址,iOS获取App ipa包以及资源文件

    要获得线上APP的ipa文件 xff0c 现在有以下几种方案 1 通过PP助手下载安装到手机的应用 2 通过iTools助手下载安装到手机的应用 3 通过Apple Configurator 2 Mac商店 获取 前两种方案网上的教程很多
  • 华为服务器修改带外管理口,服务器带外管理地址

    服务器带外管理地址 内容精选 换一换 服务器上的ICAgent被卸载后 xff0c 会影响该服务器的日志采集能力 xff0c 请谨慎操作 xff01 云日志服务主机管理界面 xff0c 仅支持卸载安装在Linux环境中的ICAgent xf
  • [转]C++ 使用 curl 进行 http 请求(GET、POST、Download)的封装

    原文连接 xff1a https www cnblogs com oftenlin p 9478067 html CommonTools h CommonTools h Created on 2018年8月2日 Author didi in
  • [转]使用 curl 发送 POST 请求的几种方式

    HTTP 的 POST 请求通常是用于提交数据 xff0c 可以通过这篇文章来了解各种提交方式 xff1a 四种常见的 POST 提交数据方式 做 Web 后端开发时 xff0c 不可避免地要自己给自己发请求来调试接口 xff0c 这里要记
  • 人生进度条百分之20_人生进度条——27%

    嗨 xff5e 我们又见面啦 嘿 小吕这次有好多好多想要和你分享的东西 xff5e Part 01 人生进度条 假如我这一辈子有幸能活到75岁 xff0c 那我的人生就只有九百个月 从没仔细想过 xff0c 今年我20岁 xff0c 原来已
  • Linux用curl调用应用接口

    很多同学都用postman测试过后台应用接口 xff0c 的确非常方便 今天这里介绍一下在Liunx下用curl命令测试接口的方法和遇到的一些问题 xff0c 包括url传参转义和中文传参报错的问题 xff0c 这里都提供解决办法 下面我们
  • http.request请求及在node中post请求参数解析

    Post请求 var http 61 require 39 http 39 var qs 61 require 39 querystring 39 var post data 61 a 123 time new Date getTime 这
  • 网络调试助手的使用 调试TCP,UDP

    网络调试助手是集TCP UDP服务端客户端一体的网络调试工具 xff0c 可以帮助网络应用设计 开发 测试人员检查所开发的网络应用软硬件的数据收发状况 xff0c 提高开发的速度 xff0c 是TCP UDP应用开发助手 集成TCP UDP
  • EasyDarwin开源流媒体云平台之云台ptz控制设计与实现

    本文转自EasyDarwin开源团队成员Alex的博客 xff1a http blog csdn net cai6811376 article details 51912692 近日 xff0c EasyDarwin云平台加入云台控制功能
  • 字节与比特序

    软件和硬件工程师不得不处理字节及比特序问题 xff0c 这个过程就像走迷宫 尽管最终我们能够走出来 xff0c 但我们往往筋疲力尽 本文尝试对字节和比特序发挥影响力的领域 xff0c 包括CPU xff0c 总线 xff0c 设备及网络协议
  • 手把手教你新建MSP432工程

    MSP432是德州仪器推出的新一款高性能低功耗处理器 xff0c Cortex M4内核 xff0c 较430相比处理能力大大增强 xff0c 同时采用了430设计的低功耗技术 xff0c 和传统ARM相比功耗更低 xff0c 相信在不久的
  • boost异步tcp通信技术练习

    本例演示了基本的boost异步tcp服务器程序的编写 演示程序的构思是这样的 xff1a 服务端 xff1a l 控制台程序 xff1b l 侦听客户端连接 xff0c 当有新连接时 xff0c 在屏幕上打印消息 xff1b l 当收到客户
  • CSPS模拟 59

    经ooo提醒咕题解会掉rp 我反正也 冒着改不完题的风险 xff0c 就开始颓博了 话说好久没这么舒坦的垫过底了233 上来一看T1 xff0c 立刻就转化题意为有奇偶性和距离限制的bfs 然后就没考虑子串不能越过母串边界的事 xff0c
  • vmware使用open-vm-tools配置ubuntu共享文件夹

    vmware下安装ubuntu 18 04后 xff0c 按往常的惯例安装vmware tools xff0c 安装时提示建议使用open vm tools xff0c 于是放弃vmware tools的安装 xff0c 尝试使用open
  • CSPS模拟 58

    爆炸 没算内存见祖宗 为什么偏偏这次卡内存我没算 T1 HashMap各种水 T2 智障背包 xff01 但是卡内存 xff01 T3 Dashspeed 考试用点分治 43 线段树水到了80 实际上是个没见过的套路题 在之前的思维定势里

随机推荐