ListViewTimer

列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)

项目中有时会遇到列表中含有倒计时或者是计时器的需求,实现的方式有很多种,此Demo中是使用Thread + Handler实时的对item的局部进行

刷新达到计时或倒计时的功能

本项目中实现的是计时器功能(当前时间距离过去的一个时间的时间差值)

实现步骤:

1.创建数据模型TaskModel

public class TaskModel {

public String timer; //计时器显示的结果 10:31:30(时分秒的格式)

public long sendTime = 1547516639000L;//目标时间

public long countTime;//long型的时间差值

}

2.获取服务器端接口中得到的目标时间(最好是long数据类型方便加减操作)准备好数据;

3.创建Thread,主要是计算当前时间和目标时间的差值,也就是countTime字段的值;

获取当前时间方法:long currentTime = System.currentTimeMillis();

时间差值:countTime = currentTime - sendTime;

页面显示的时间差值:

long hours = (counttime) / (1000 * 60 * 60);

long minutes = (counttime - hours * (1000 * 60 * 60)) / (1000 * 60);

long second = (counttime / 1000 - hours * 60 * 60 - minutes * 60);

//并保存在商品time这个属性内

String hoursStr = hours + "";

String minutesStr = minutes + "";

String secondStr = second + "";

if (hours < 10) {

hoursStr = "0" + hoursStr;

}

if (minutes < 10) {

minutesStr = "0" + minutesStr;

}

if (second < 10) {

secondStr = "0" + secondStr;

}

timer = hoursStr + ":" + minutesStr + ":" + secondStr;

4.准备好数据,我们就要创建适配器,适配器和普通的适配器一样,只不过要创建一个ViewHolder的集合mHolderList,在onBindViewHolder方法中将每一个ViewHolder

add进mHolderList中

//先判断集合中是否包含当前的ViewHolder

if (!mHolderList.contains(myViewHolder)) {

mHolderList.add(myViewHolder);//添加

}

然后提供一个方法更新item中时间差

/**

* 只刷新item中的计时器数据

*/

public void notifyTime() {

for (int i = 0; i < mHolderList.size(); i++) {

mHolderList.get(i).mTextView.setText(mData.get(mHolderList.get(i).position).timer);

}

}

5.创建Handler,每次收到新的消息就调用Adapter中的notifyTime方法;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

//优化刷新adapter的方法

mAdapter.notifyTime();

break;

}

super.handleMessage(msg);

}

};

6.在之前创建好的Thread中获取完时间差值之后创建message并发送给Handler

Message message = new Message();

message.what = 1;

//发送信息给handler

mHandler.sendMessage(message);

注:Thread中要有一个停止发送消息的标记值endThread,随着当前页面的生命周期停止Thread

@Override

public void onDestroy() {

super.onDestroy();

myThread.endThread = true;

}

具体的详细实现看Demo中,每一步都有注释可以看懂;

android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)...相关推荐

  1. 在 Excel 中如何使用宏示例删除列表中的重复项

    概要:在 Microsoft Excel 中,可以创建宏来删除列表中的重复项.也可以创建宏来比较两个列表,并删除第二个列表中那些也出现在第一个(主)列表中的项目.如果您想将两个列表合并在一起,或者如果 ...

  2. idea中push到github或gitee过程中的常见错误记录

    刚用git进行版本控制不久,过程中遇到了很多很多问题,之前一直使用svn,git支持分布式版本管理,在你自己本地上,也会有版本更新的记录.使用svn时,必须要保持网络畅通,所有的版本记录是记录在中央服 ...

  3. loadrunner中的c函数----从参数列表中取参数并与特定字符进行字符串比较。

    今天在www.sztest.net上看到一个关于lr的问题,自己试着解决了一下.主要是想做出一个从参数列表中取参数,并和字符串常量进行比较的功 能.把代码贴到下面.其实是很简单的.问题主要出现在lr_ ...

  4. 从tabBarController的一个item上的控制器跳转到另一个item上的控制器

    先从习惯性的tabBarController开始,很多应用的外框都是用这个开始的,而从tabBarController的一个item上的控制器跳转到另一个上的,往往都是直接通过点击tabBar上的不同 ...

  5. python中如何求列表中的和_python实现求解列表中元素的排列和组合

    求解列表中元素的排列和组合问题这个问题之前就遇到过几次没有太留意,最近在做题的时候遇上挺多的排列组合问题的,想来有必要温习一下了,今天花点时间写一下,之前都是手工写的,后来知道可以直接使用python ...

  6. python删除列表中的偶数_Python:从列表中删除奇数

    我写了一个函数来从列表中删除奇数,就像这样: def remove_odd(l): for i in l: if i % 2 != 0: l.remove(i) print l return l re ...

  7. java中list去除空值_Java –从列表中删除所有空值

    java中list去除空值 介绍: 在本文中,我们将学习如何使用普通的Java,Java 8 lambda表达式和某些第三方库从Java 列表中删除空值 . 所以,让我们开始吧! 从Java中的 让我 ...

  8. html5中的h1,HTML5语义 - 产品列表中的h1用法

    我们正在讨论在产品列表页面中使用h1标签.有几个方面可以用来过滤产品.HTML5语义 - 产品列表中的h1用法 技术上明智的做法是使用多个h1标签,如果这些标签被封装在section或article中 ...

  9. Python入门--列表的查询操作--获取列表知道那个元素的索引、获取列表中的单个元素、获取列表中的多个元素

    #列表的查询操作 #获取列表中指定元素的索引 #index()-->如果列表中存在N个相同的元素,只返回相同元素中的第一个索引 # -->如果查询的元素在列表中不存在,则会抛出Valuee ...

最新文章

  1. Ext JS学习第五天 Ext_window组件(二)
  2. 面试经验分享|精华版
  3. java 给数组添加删除数_Java实现数组的添加、删除、查找(基础型)
  4. linux虚拟机模板部署模板,创建和部署基于 Linux 的虚拟机模板
  5. MySQL:Innodb表 Data free 的计算概要
  6. php form foreach,php – Drupal Form API – 使用foreach循环来构建表单
  7. 基于java的网络电子通讯录的设计_网络电子通讯录管理系统
  8. 谷歌浏览器弹出Chrome版本太旧解决方式
  9. 风变编程的python8.9元_如何看待风变编程的 Python 网课?
  10. Could not acquire change log lock. Currently locked by XXX
  11. Day12-2021.1.20-华为硬件笔试
  12. 最简单粗暴的蓝牙耳机选购技巧,盲选不踩雷五款品牌推荐
  13. money as debt 笔记
  14. 收藏 | 浙江省各地教师公务员等实际工资爆料
  15. python二进制转八进制代码_如何在python中输入二进制、八进制、十进制、十六进制数据并转换...
  16. Android自动登录今日头条
  17. 《虚拟化与云计算》致谢
  18. 化繁为简|AIRIOT智慧水务信息化建设解决方案
  19. 满帮Q4营收14.3亿元:履约订单数增长41.6%,上线货主信用体系规范服务
  20. 給藍軍朋友的敗選感言

热门文章

  1. 位、字,字节与KB的关系?
  2. 破解mysql数据库的密码
  3. LoadRunner参数包含逗号
  4. Mssql 跨域查询
  5. bootstrap弹出的模态框水平垂直居中的实现
  6. Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程
  7. 自己动手焊制硬件开发板
  8. word 2007 中插入图片无法显示,只能显示底部一部分
  9. Python操作Excel删除一个Sheet
  10. 局域网 两台电脑共享 密码关闭