Android 利用RecyclerView.Adapter刷新列表中的单个view问题
首先使用RecyclerView的adapter继承:RecyclerView.Adapter
public class OrderListAdapter extends RecyclerView.Adapter {
//TODO
}
2、创建ViewHolder 需要继承
class ViewHolder extends RecyclerView.ViewHolder{
//TODO 声明view
public ViewHolder(View convertView) {
super(convertView);
//TODO 初始化view
}
}
通过onCreateViewHolder 返回好创建的布局文件:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(mContext).inflate(R.layout.xxxx, parent, false);
return new ViewHolder(inflate);
}
接下来重点来了:
通过onBindViewHolder 带List payloads 参数的方法来区分是现实列表中的同一位置的view的刷新:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) {
if (null == payloads || payloads.size() < 1) {
onBindViewHolder(holder, position);
} else if (mIsActivityTop) {
for (Object payload : payloads) {
// 刷新倒计时
if (payload instanceof Integer && ((int) payload) == UPDATE_COUNT_DOWN_TIME) {
((ViewHolder) holder).tv_time.setText("刷新了"));
}
}
}
}
传入的整型:
private final static int UPDATE_COUNT_DOWN_TIME = 1;
而payloads可以List,这样就可以区分刷新不同区域的view了.
而上面的调用的onBindViewHolder(holder, position),就是重写的onBindViewHolder(holder, position)的方法了:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//TODO 写绑定view 的逻辑以及显示
}
对于什么时候会调用到onBindViewHolder(holder, position, payloads)的方法:
当你写倒计时的时候:(倒计时是用rxjava写的,在onNext的时候)
Subscription adSkipTimer Observable.interval(1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Long>() {
@Override
public void onCompleted() { } @Override
public void onError(Throwable e) { } @Override
public void onNext(Long aLong) {
notifyItemRangeChanged(0, getItemCount(), UPDATE_COUNT_DOWN_TIME);
}
}
});
通过 notifyItemRangeChanged 来调用onBindViewHolder(holder, position, payloads)的方法。
通过notifyDataSetChanged 来调用onBindViewHolder(holder, position)的方法。
Android 利用RecyclerView.Adapter刷新列表中的单个view问题的更多相关文章
- Android利用RecyclerView实现列表倒计时效果
最近面试时,面试官问了一个列表倒计时效果如何实现,然后脑袋突然懵的了O(∩_∩)O,现在记录一下. 运行效果图 实现思路 实现方法主要有两个: 1.为每个开始倒计时的item启动一个定时器,再做更新i ...
- android 开发 RecyclerView 横排列列表布局
1.写一个一竖的自定义布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...
- Android开发——RecyclerView实现下载列表
本篇记录的是使用Jsoup框架爬取网页内容,结合Android的RecyclerView,从而实现批量下载小说的功能(也是我的APP星之小说下载器Android版的核心功能),思路仅供参考 本文使用了 ...
- [Android]ListView的Adapter.getView()方法中延迟加载图片的优化
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4139998.html 举个例子吧,以好友列表为例 ListVi ...
- android利用provider查询同一个数据库中没有对外暴露出来的表
[原创]转载请加本篇博客地址http://www.cnblogs.com/scarecrow-blog/p/6266042.html 个人感觉这是android provider 的一个漏洞, 废话少 ...
- Android利用Looper在子线程中改变UI
MainActivity如下: package cn.testlooper; import android.app.Activity; import android.os.Bundle; import ...
- android 利用反射机制获取drawable中所有的图片资源
public List<Map<String,Object>> getGridData() { list=new ArrayList<Map<String,Obje ...
- Android 在滚动列表中实现视频的播放(ListView & RecyclerView)
这片文章基于开源项目: VideoPlayerManager. 所有的代码和示例都在那里.本文将跳过许多东西.因此如果你要真正理解它是如何工作的,最好下载源码,并结合源代码一起阅读本文.但是即便是没有 ...
- 在滚动列表中实现视频的播放(ListView & RecyclerView)
英文原文:Implementing video playback in a scrolled list (ListView & RecyclerView) 本文将讲解如何在列表中实现视频播放. ...
随机推荐
- Error:failed to find Build Tools revision 23.0.0 rc3
解决,选择AS里有的版本就可以了,已有的我这就一个23.0.3,导入的项目是23.0.2 Donate:)
- HTTP连接管理
本文是<HTTP权威指南>读书笔记: 几乎所有的HTTP通信都是通过TCP/IP承载的,当HTTP要传送一些报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输.因此HTT ...
- react+redux官方实例TODO从最简单的入门(2)-- 增
虽然官网的TodoList的例子写的很详细,但是都是一步到位,就是给你一个action,好家伙,全部都写好了,给你一个reducer,所有功能也是都写好了,但是我们这些小白怎么可能一下就消化那么多,那 ...
- css text-overflow:ellipsis 文字多余剪切
text-overflow: ellipsis;多度剪切white-space: nowrap;禁止换行overflow: hidden;多余隐藏
- 数据库阿里连接池 druid配置详解
http://blog.csdn.net/hj7jay/article/details/51686418 http://lj6684.iteye.com/blog/1770093 http://www ...
- [mark] 使用Sublime Text 2时如何将Tab配置为4个空格
在Mac OS X系统下,Sublime Text是一款比较赞的编辑器. 作为空格党的自觉,今天mark一下使用Sublime Text 2时如何将Tab配置为4个空格: 方法来自以下两个链接: ht ...
- 设计模式--享元模式Flyweight(结构型)
一.享元模式 在一个系统中如果有多个相同的对象,这些对象有部分状态是可以共享的,我们运用共享技术就能有效地支持大量细粒度的对象. 二.例子 举个围棋的例子,围棋的棋盘共有361格,即可放361个棋子. ...
- [MySQL]MySQL之权限管理
一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接m ...
- Selenium FF WebDriver 加载firebug 和设置代理
首先这次使用的webDriver for Firefox的 由于项目的原因,需要在测试的时候加载Firebug和使用vpn,加载代理 Firefox 加载代理,可以从FF菜单上看,代理分为好几种 我这 ...
- Mosquitto搭建Android推送服务(一)MQTT简介
总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...