不知道多说些什么,还是少废话,直接给出代码吧。两个BaseAdapter的封装而已。

BaseListAdapter.java

package com.example.duke.myapplication.adapter;import android.content.Context;
import android.widget.BaseAdapter;import java.util.ArrayList;
import java.util.List;/*** Author: duke* DateTime: 2017-08-02 13:57* Description: android系统基本适配器的包装类*/
public abstract class BaseListAdapter<D extends Object> extends BaseAdapter {public final String TAG = getClass().getSimpleName();private Context mContext;private List<D> mDataList = new ArrayList<>();public List<D> getDataList() {if (mDataList == null) {mDataList = new ArrayList<>();}return mDataList;}public Context getContext() {return mContext;}public BaseListAdapter(Context context) {this(context, null);}public BaseListAdapter(Context context, List<D> list) {this.mContext = context;if (this.mContext == null) {throw new IllegalArgumentException("context is null");}setDatas(list);}public void clear() {getDataList().clear();notifyDataSetChanged();}public void setDatas(List<D> data) {getDataList().clear();if (data != null) {getDataList().addAll(data);}notifyDataSetChanged();}public void addDatas(List<D> data) {if (data != null) {getDataList().addAll(data);}notifyDataSetChanged();}public void addDatas(int position, List<D> data) {if (data != null) {getDataList().addAll(position, data);}notifyDataSetChanged();}@Overridepublic int getCount() {return getDataList().size();}@Overridepublic D getItem(int position) {if (position < 0 || position >= getDataList().size()) {return null;}return getDataList().get(position);}@Overridepublic long getItemId(int position) {return position;}
}

BaseRecyclerViewAdapter.java

package com.example.duke.myapplication.adapter;import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;import java.util.ArrayList;
import java.util.List;/*** Author: duke* DateTime: 2017-08-02 13:57* Description: recyclerView adapter的适配器包装类*/
public abstract class BaseRecyclerViewAdapter<T extends RecyclerView.ViewHolder, D> extends RecyclerView.Adapter<T> {public final String TAG = getClass().getSimpleName();private Context mContext;private List<D> mDataList = new ArrayList<>();private OnItemClickListener<D> onItemClickListener;private OnItemLongClickListener<D> onItemLongClickListener;public void setOnItemClickListener(OnItemClickListener<D> l) {this.onItemClickListener = l;}public void setOnItemLongClickListener(OnItemLongClickListener<D> l) {this.onItemLongClickListener = l;}public List<D> getDataList() {if (mDataList == null) {mDataList = new ArrayList<>();}return mDataList;}public Context getContext() {return mContext;}public BaseRecyclerViewAdapter(Context context) {this(context, null);}public BaseRecyclerViewAdapter(Context context, List<D> list) {this.mContext = context;if (this.mContext == null) {throw new IllegalArgumentException("context is null");}setDatas(list);}public void clear() {getDataList().clear();notifyDataSetChanged();}public void setDatas(List<D> data) {getDataList().clear();if (data != null) {getDataList().addAll(data);}notifyDataSetChanged();}public void addDatas(List<D> data) {if (data != null) {getDataList().addAll(data);}notifyDataSetChanged();}public void addDatas(int position, List<D> data) {if (data != null) {getDataList().addAll(position, data);}notifyDataSetChanged();}@Overridepublic int getItemCount() {return getDataList().size();}public D getItem(int position) {if (position < 0 || position >= getDataList().size()) {return null;}return getDataList().get(position);}public View newView(int layoutId, ViewGroup viewGroup) {if (viewGroup == null) {return null;}return LayoutInflater.from(viewGroup.getContext()).inflate(layoutId, viewGroup, false);}public void invokeOnClickEvent(final View view, final int position) {if (view == null || onItemClickListener == null) {return;}view.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {onItemClickListener.onClick(view, getItem(position), position);}});}public void invokeOnLongClickEvent(final View view, final int position) {if (view == null || onItemLongClickListener == null) {return;}view.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {onItemLongClickListener.onLongClick(view, getItem(position), position);return true;}});}public interface OnItemClickListener<M> {void onClick(View view, M data, int position);}public interface OnItemLongClickListener<M> {void onLongClick(View view, M data, int position);}
}

Android 对ListView和RecyclerView的两个BaseAdapter封装分享相关推荐

  1. Android一个ListView列表之中插入两种不同的数据

    http://www.cnblogs.com/roucheng/ Android一个ListView列表之中插入两种不同的数据 代码如下: public class ViewHolder{Button ...

  2. 【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView

    一 背景概述: ScrollView里嵌套ListView,一直是Android开发者(反正至少是我们组)最讨厌的设计之一,完美打破ListView(RecyclerView)的复用机制,成功的将Na ...

  3. Android: ListView 和 RecyclerView 对比(一)

    1.ListView 由于手机屏幕空间有限,能够一次性在屏幕上显示的内容并不多,当程序中有大量的数据需要展示的时候,就可以借助 ListView 来实现.ListView 允许用户通过手指上下滑动的方 ...

  4. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d... 作者:黄宁源 一,背景 RecyclerView是谷歌官方出的一 ...

  5. Android入门(九)| 滚动控件 ListView 与 RecyclerView

    文章目录 ListView 内置类型的简单运用 定制数据类型 提升效率 点击事件 RecyclerView 布局管理器 点击事件 ListView 内置类型的简单运用 由于手机屏幕空间有限,能够一次性 ...

  6. Android ListView与RecyclerView对比浅析

    前言 RecyclerView是谷歌官方出的一个用于大量数据展示的新控件,可以用来代替传统的ListView,更加强大和灵活. 弄清楚RecyclerView是否有足够的吸引力替换掉ListView, ...

  7. Android 5.0学习之ListView升级版RecyclerView

     前言 大家都知道ListView在我们开发中很常用,Android5.0的到来,它给我们带来了一个替代 ListView的新的控件,也可以说是ListView的升级版,那就是RecyclerVi ...

  8. android ListView实现圆角(两种解决方案)

    首先呢,我们还是看几个示图:(这是360推出的一款天气预报APP(墨迹),很不错的一款哦,这里为她们做一个免费广告,哈哈.)                  这种带有圆角的listview' 看起来 ...

  9. Android 常见界面控件(ListView、RecyclerView、自定义View篇)

    Android 常见界面控件(ListView.RecyclerView.自定义View篇) 目录 3.3 ListView的使用 3.3.1 ListView控件的简单使用 3.3.2 常用数据适配 ...

  10. Android截屏-- ScrollView,ListView及RecyclerView截屏(三)

    在做分享功能的时候,需要截取全屏内容,一屏展示不完的内容,一般我们会用到 ListView 或 ScrollView 一: 普通截屏的实现 获取当前Window 的 DrawingCache 的方式, ...

最新文章

  1. monocross 环境搭建:MonoTouch Mono for Android
  2. 百度广告管家帮助站长“管好家”
  3. lua传值到php,使用lua实现php的var_dump()函数功能
  4. tornado学习笔记day02-进阶与提升
  5. Oracle所有分析函数转
  6. Dapper基础用法
  7. 如何用 SQL 做留存率分析?
  8. Linux学习笔记(用户管理)
  9. C# 打印机功能打印图表
  10. php做一个每天的考勤表,教你做一个酷毙的考勤表!|
  11. 半导体二极管的伏安特性和电流方程
  12. 【BZOJ2827】千山鸟飞绝 离散化+splay
  13. 1000+常用Python库
  14. mybatis mysql连接时区_MySQL时区的查看和设置
  15. 使用树莓派3B、RTL-SDR、OpenWebRX搭建无线电监测站
  16. bit,B,KB,MB,GB,TB,PB分别是什么单位,换算是什么
  17. GPGPU-SIM(原码阅读)(流多处理器部分完成)
  18. 使用Python进行压缩与解压缩
  19. 云队友丨任正非:没有退路,就是胜利之路
  20. 谈谈XR关键技术及VR/AR/MR/XR关系

热门文章

  1. 阿兹尔海默症生物标志物(姑且叫标志物)的一些总结
  2. 自建nod32更新服务器,ESET NOD32 官方升级服务器地址
  3. workerman php使用,workerman怎么用
  4. <学习笔记>从零开始自学Python-之-web应用框架Django( 八)Django表单
  5. 组件化之路 - ViewBinding基类封装
  6. linux 命令详解 大于号_shell重定向(大于号,小于号,左右,21,)
  7. 信息流广告的发展前景!
  8. html绘图插件,canvas,svg,vml绘图插件
  9. No bootable device
  10. Java实现餐厅点餐系统