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) 本文将讲解如何在列表中实现视频播放. ...
随机推荐
- MySQL 优化MySQL Server
一.使用show variables 和show status 命令查看MySQL的服务器静态参数值和动态运行状态信息. 二.可以使用 mysqld --verbose --help|more 查看某 ...
- PHP中常见的提示对照表
.Notice: Undefined variable: 变量名 in 注:使用了一个没有被定义的变量 .Parse error: syntax error, unexpected T_ELSE in ...
- Javascript模块化编程(二):AMD规范
Javascript模块化编程(二):AMD规范 作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...
- TBitmapSurface.StretchFrom
procedure TBitmapSurface.StretchFrom(const Source: TBitmapSurface; const NewWidth, NewHeight: Intege ...
- ubuntu 搞坏了sudoers文件之修复方案
pkexec visudo askubuntu原回答摘抄如下 On a modern Ubuntu system (and many other GNU/Linux distributions), f ...
- C语言 完美字符串
约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...
- WinForm BaseClass类常用通用方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- ModelMapper 中高级使用 java
ModelMapper 是一个java对象自动映射的第三方架包,用起来很方便,配合阿里的frstjson可以极大简化后台代码. 但是ModelMapper 中文使用说明很少,官网http://mode ...
- TCP/IP协议三次握手与四次握手流程解析
原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...
- myeclipse实现包的分层显示