Android之RecyclerView之空数据提示
2015-10-28 22:07
429 查看
RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView 是 ListView 的升级版本,更加先进和灵活。
查看ViewHolder重写方法时,发现有意思的地方。创建ViewHolder时,调用RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType),只是知道调用这个方法,创建ViewHolder,但是对第二个参数置之不理,也不知道这个参数的意思。在ViewHolder重写的方法中,有这么个方法,
int getItemViewType(int position),默认的返回值为0。现在才知道onCreateViewHolder方法中参数是在这里获取到的,表示某个条目的类型。尝试在这里做下处理,看看能不能达到想要的效果。还真出现了意外的惊喜,空数据提示实现了。
在调用int getItemCount() ,获取条目数量时,我们习惯这么写return lists.size <= 0 ? 0 : lists.size(); 如果这么写,空数据提示,依然没显示出来。如果这样写,表示空数据时,条目数量为0。需要改成 return
lists.size() > 0 ? lists.size() : 1;表示即使空数据,也显示一条条目。
第一次写博客,不足之处,敬请谅解。有问题,大家一起探讨!
源码下载地址:点击打开链接
查看ViewHolder重写方法时,发现有意思的地方。创建ViewHolder时,调用RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType),只是知道调用这个方法,创建ViewHolder,但是对第二个参数置之不理,也不知道这个参数的意思。在ViewHolder重写的方法中,有这么个方法,
int getItemViewType(int position),默认的返回值为0。现在才知道onCreateViewHolder方法中参数是在这里获取到的,表示某个条目的类型。尝试在这里做下处理,看看能不能达到想要的效果。还真出现了意外的惊喜,空数据提示实现了。
private static final int VIEW_TYPE = -1; /** * 获取条目 View填充的类型 * 默认返回0 * 将lists为空返回-1 * @param position * @return */ public int getItemViewType(int position) { if (lists.size() <= 0) { return VIEW_TYPE; } return super.getItemViewType(position); }
</pre><pre name="code" class="java"><span style="font-family:SimSun;font-size:18px;"> 既然对ViewType做了处理,在创建ViewHolder时,也需要针对不同的ViewType做相应处理.</span><span style="font-family:Arial, Helvetica, sans-serif;"> </span>
<span style="font-family: Arial, Helvetica, sans-serif;">/**</span>
* 创建ViewHolder * @param viewGroup * @param viewType * @return */ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View view; LayoutInflater inflater = LayoutInflater.from(context); if (VIEW_TYPE == viewType) { view = inflater.inflate(R.layout.item_empty, viewGroup, false); return new MyEmptyHolder(view); } view = inflater.inflate(R.layout.item_test, viewGroup, false); return new MyHolder(view); } /** * 将数据绑定到ViewHolder上 * @param viewHolder * @param position */ public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { if (viewHolder instanceof MyHolder) { ((MyHolder) viewHolder).tv_test.setText(lists.get(position)); } }
在调用int getItemCount() ,获取条目数量时,我们习惯这么写return lists.size <= 0 ? 0 : lists.size(); 如果这么写,空数据提示,依然没显示出来。如果这样写,表示空数据时,条目数量为0。需要改成 return
lists.size() > 0 ? lists.size() : 1;表示即使空数据,也显示一条条目。
第一次写博客,不足之处,敬请谅解。有问题,大家一起探讨!
源码下载地址:点击打开链接
相关文章推荐
- Android多媒体—图片技术
- AndroidMusicPlayer
- android studio 学习遗留问题和学习总结
- android技术学习资源及学习途径
- Android带密码解压----Zip4J开源项目使用
- EventBus学习笔记
- Android短信拦截机制适配的坑(下)--4.4以上系统,主要是6.0
- Android - 实现下拉刷新 和 RecyclerView Bug
- Android RecyclerView之添加Item分割线
- android studio 更改背景和设置字体大小
- android项目,控件动态赋值后,中文乱码
- android 65 文件访问权限
- Android之Adapter用法总结
- Android学习笔记之Activity Intent 数据传输之回传结果
- android常用基础类库
- Android开发手记(16) 数据存储一 SharedPreferences
- 工作小结
- android按钮动画的实现
- Android项目-Activity跳转动画、状态选择器、Shape
- Android项目-自定义组合控件