1.空数据占位

前言:

  当列表中无数据时,  显示暂无数据的占位View;

现有实现方式: 

  1. 在每一个需要空占位的 RecycleView 页面中,添加占位View (可以用 ViewStub); 然后当无数据时, 控制 RecycleView 和 NothingView 的显示隐藏

  2. 重写 RecycleView (想了解的请自行百度)

  3. 重写Adapter 

  显然 第一种方式 费时费力;  第二种第三种随意;

1.1 分析:

  1.集合没有数据时, 算作只有 1个条目的 Adapter

  2.空数据时, 返回 空布局的 ViewHolder, 且不需要渲染数据

直接上代码

public abstract class BaseNothingAdapter<T> extends BaseAdapter<T> {
protected static final int ITEM_NOTHING = 0xad; //空类型 Item
/**
* 空布局 res
*/
@LayoutRes
private int mNothingRes; public BaseNothingAdapter(@NotNull Context mContext, @Nullable List<T> mData, @Nullable AdapterListener listener) {
this(mContext, mData, listener, R.layout.item_nothing);
} public BaseNothingAdapter(@NotNull Context mContext, @Nullable List<T> mData, @Nullable AdapterListener listener, @LayoutRes int nRes) {
super(mContext, mData, listener);
this.mNothingRes = nRes;
} /**
* 当集合数据为空时, 返回 1
* @return
*/
@Override
public int getItemCount() {
if(mData == null || mData.isEmpty())
return 1;
return mData.size();
} /**
* 当集合数据为空时, 返回 空布局类型
* @param position
* @return
*/
@Override
public int getItemViewType(int position) {
if(mData == null || mData.isEmpty()){
return ITEM_NOTHING;
}else {
return getMyType(position);
}
} @NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//空布局类型时, 返回 NothingHolder
if(viewType == ITEM_NOTHING)
return new NothingHolder(layoutInflater.inflate(mNothingRes, parent, false));
else
return createMyHolder(parent,viewType);
} @Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder recHolder, final int position) {
// 空布局类型时, 不做操作;
if(getItemViewType(position) == ITEM_NOTHING){
return;
}
onBindMyData(recHolder,position);
} protected static class NothingHolder extends RecyclerView.ViewHolder {
NothingHolder(@NonNull View itemView) {
super(itemView);
}
}
}

孟老板 BaseAdapter封装 (三) 空数据占位图的更多相关文章

  1. 孟老板 BaseAdapter封装(五) ListAdapter

    BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...

  2. 孟老板 BaseAdapter封装 (一) 简单封装

    BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...

  3. 孟老板 BaseAdapter封装 (二) Healer,footer

    BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...

  4. 孟老板 BaseAdapter封装(四) PageHelper

    BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...

  5. 孟老板 ListAdapter封装, 告别Adapter代码 (上)

    BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...

  6. 使用Vue封装暂无数据占位图组件

    1. 前言 在日常开发中,页面上肯定有展示数据的需求,但是当某些时候该展示数据的地方此时数据为空时,就会留下一片空白,对用户体验不是很好,那么接下来我们就封装一个空数据时的占位展示图,告诉用户此时用户 ...

  7. 孟老板 ListAdapter封装, 告别Adapter代码 (三)

    BaseAdapter系列 ListAdapter封装, 告别Adapter代码 (一) ListAdapter封装, 告别Adapter代码 (二) ListAdapter封装, 告别Adapter ...

  8. 孟老板 ListAdapter封装, 告别Adapter代码 (四)

    BaseAdapter系列 ListAdapter封装, 告别Adapter代码 (一) ListAdapter封装, 告别Adapter代码 (二) ListAdapter封装, 告别Adapter ...

  9. [iOS]一行代码集成空白页面占位图(基于runtime+MJRefresh思想)

    2018年01月03日阅读 2472   [iOS]一行代码集成空白页面占位图(基于runtime+MJRefresh思想) LYEmptyView 此框架是本人在5,6个月前,公司启动新项目的时候, ...

随机推荐

  1. Python的套接字、IPv4和简单的客户端/服务器编程

    #!/usr/bin/env python # -*- coding: utf-8 -*- import socket from binascii import hexlify import sys ...

  2. POJ1324贪吃蛇(状态压缩广搜)

    题意:       给你一个地图,有的地方能走,有的地方不能走,然后给你一条蛇,问你这条蛇的头部走到1,1的位置的最少步数,注意,和贪吃蛇不太一样,就是蛇咬到自己身体的那个地方,具体怎么不一样自己模拟 ...

  3. 关于 C/C++ 函数调用约定

    关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的. VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调 ...

  4. utf8字符集下的比较规则

    前言: 在MySQL中,比较常用的字符集是utf8和utf8mb4.这两个字符集是类似的,utf8是utf8mb3的别名,所以之后在MySQL中提到utf8就意味着使用1~3个字节来表示一个字符,如果 ...

  5. 2020.12.14vj补题

    A. Lucky Ticket 题意:就是说4与7是幸运数字,用4和7组成的数字也是幸运数字,问所给数字是不是幸运数字 思路:直接敲 代码: 1 #include<iostream> 2 ...

  6. beta设计和计划

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 Beta设计和计划 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 ...

  7. OAuth2.0 授权方式及步骤梳理总结

    OAuth 2.0授权协议使第三方应用程序可以通过协调资源所有者和HTTP服务之间的批准交互,或者通过允许第三方应用程序代表资源所有者来获得对HTTP服务的有限访问权,或者代表资源所有者. 代表自己获 ...

  8. 神奇的不可见空格<200b>导致代码异常

    故事是这样发生的,在做一个JSON对象转化的时候,出现了转化异常:刚开始还是以为是格式错误,后来一步步排除,才发现是不可见空格<200b>导致的解析异常 出现 使用Typora编写文字时, ...

  9. flink操作mysql

    Flink读写mysql 如果是mvn项目的话,需要预先导入相应的包: <dependency> <groupId>org.apache.flink</groupId&g ...

  10. [bug] CDH 安装 Error : No matching Packages to list

    信息 分析 我的系统是CentOS 7,而 cm 安装包是配合 redhat 6 的,应该选择 redhat 7 目录下的包 参考 https://community.cloudera.com/t5/ ...