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

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中,每一步都有注释可以看懂;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 查看当前日期和时间

一、查看和修改Linux的时区 1. 查看当前时区 命令 &#xff1a; "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 &#xff1a; "tzselect" 方法 B 仅限于RedHat Linux 和 CentOS 命令 &#xff1a; "timeconfig" 方法 C 适用于Debian 命令 &…

第二季1:MPP模块概述

以下内容源于海思官方文档内容&#xff0c;如有侵权请告知删除。 一、MPP模块概述 海思的媒体处理软件平台&#xff08;MPP&#xff0c;Media Process Platform&#xff09;有利于应用软件的快速开发。因为该平台屏蔽了一些与芯片相关的复杂的底层处理&#xff0c;给应用软件提…

codeblocks

用来写c的 http://www.codeblocks.org/downloads/26#windows 选择codeblocks-13.12mingw-setup.exe自带gnu gcc compiler 安装后设置gcc compiler settings -> compiler -> 在顶上的selected compiler中选择gnu gcc compiler -> 选择下面一行的toolchain executables中…

小米平板安装鸿蒙系统,【新机】安卓最强平板?MatePad Pro2曝光:预装鸿蒙OS | 小米平板5到底啥时候发布?...

目前安卓阵营还在好好做平板的可能也就是三星和华为了&#xff0c;至少整体的配置规格都还不错。根据爆料&#xff0c;华为将会在近期推出MatePad Pro 2代产品&#xff0c;预计6月份正式和大家见面。MatePadPro2将会搭载麒麟9000处理器&#xff0c;算是目前安卓平板里性能最强的…

第二季3:sample_venc.c的整体分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、sample文件夹的介绍 将mpp/sample文件夹以及mpp/include文件夹导入SI后&#xff0c;搜索main时可以发现很多main函数。这说明sample文件夹下有很多例程&#xff0c;每个例程面向一个典型应用。…

〖Linux〗穿越城墙之后,直接连接国内网站的路由配置

因为有需要做Android相关的开发工作&#xff0c;很多时候要穿越之后才能做事情&#xff1b; 如Android文件加密预研、Android NDK/SDK的下载&#xff0c;都需要使用得到Google&#xff1b; 但是穿越之后&#xff0c;访问国内网站就不是那么方便了&#xff0c;所以&#xff0c;写…

android自动化持续集成,Android系统的持续集成自动化测试框架的研究与实践

摘要&#xff1a;近几年,Android系统占据着智能移动设备操作系统领域中极大的市场份额。随着Android市场中软件数量的不断攀升,移动用户对Android应用的质量要求也越来越高。如何保证Android软件的质量,成为移动应用领域中亟待解决的问题。重视移动应用的测试工作,是提高Androi…

poj 2891 Strange Way to Express Integers

题目&#xff1a;http://poj.org/problem?id2891 思路&#xff1a;扩展欧几里得 #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> using namespace std; #define maxn 100010 int n; long lo…

第二季4:SAMPLE_VENC_1080P_CLASSIC函数的总流程

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 函数SAMPLE_VENC_1080P_CLASSIC()有七个大步骤。 step 1: init sys variable&#xff0c;即初始化&#xff08;填充&#xff09;mpp系统的变量、参数。 step 2: mpp system init&#xff0c;即初始化…

读书笔记2014第13本:《富爸爸,穷爸爸》

早就收藏了《富爸爸&#xff0c;穷爸爸》这本书&#xff0c;一直没看&#xff0c;最近仔细翻看一遍&#xff0c;发现自己智商一般&#xff0c;情商不行&#xff0c;原来财商更差&#xff0c;连书里的穷爸爸也比不上。这本书在这个时代再看&#xff0c;已经跟不上形势的发展了&a…

html里嵌入语音,HTML5语音合成API语音/语言支持

我正在尝试在html5中使用语音合成来用阿拉伯语讲话,但它不起作用.我运行以下脚本来检查chrome支持的语言,阿拉伯语不是其中之一.window.addEventListener("DOMContentLoaded",function () {if (window.speechSynthesis ! undefined) {document.getElementById("…

Eclipse RCP使用SWT.EMBEDDED方式显示batik的svgCanvas后窗口最大化变白问题

// 设置svg组件一直动态&#xff08;这一行代码导致了最大化变白的问题&#xff09;svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);// 以下两行解决最大化变白问题&#xff08;具体原理不详&#xff09;svgCanvas.setDoubleBuffered(false);svgCanvas.setDoubleBuffe…

第三季1:ORTP库的移植与视频的实时传输实验

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 本节内容是移植ORTP库&#xff0c;并使用ORTP库来完成视频的实时传输。 一、ORTP的简介 1、视频网络传输的两种方式 &#xff08;1&#xff09;基于下载的方式。比如http&#xff08;Hyper Text T…

cocos2d-x实例学习之常用类及其概要作用

CCLayer,CCScene CCLayer类对应cocos2d-x引擎里的布景。每个游戏场景中都可以有很多层&#xff0c;每一层负责各自的任务&#xff0c;例如专门负责显示背景、专门负责显示道具和专门负责显示人物角色等。在每个层上面可以放置不同的元素&#xff0c;包括文本、精灵和菜单等。CC…

HTML能用作网页开发语言吗,[单选题] 以下语言本身不能作为网页开发语言的是(  )。...

参考解析&#xff1a;(1)【解题步骤】步骤1&#xff1a;通过“答题”菜单打开WORD1.DOCX文件&#xff0c;按题目要求替换文字。选中全部文本(包括标题段)&#xff0c;在【开始】功能区的【编辑】分组中&#xff0c;单击“替换”按钮&#xff0c;弹出“查找和替换”对话框。在“…

第三季2:ORTP库与RTP发送实验的源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 本文首先分析ORTP库的组成&#xff0c;然后以rtpsend.c为例说明ORTP库的使用方法&#xff0c;最后分析第三季1中的RTP发送实验的源码。 一、ORTP库的源码分析 1、ORTP库概览 &#xff08;1&#…

线程让出实验【RT-Thread学习笔记 4】

API: rt_thread_yield 线程函数中调用&#xff0c;本线程释放MCU。如果此时有别的相同优先级的任务整处于等待状态&#xff0c;将获得MCU使用权。 线程让出就是给OS增加一个任务调度的机会。 创建两个线程&#xff0c;观察他们的结果&#xff1a; //线程让出试验 void yield_te…

你或许不了解的C++函数调用(1)

这篇博客名字起得可能太自大了&#xff0c;搞得自己像C大牛一样&#xff0c;其实并非如此。C有很多隐藏在语法之下的特性&#xff0c;使得用户可以在不是特别了解的情况下简单使用&#xff0c;这是非常好的一件事情。但是有时我们可能会突然间发现一个很有意思的现象&#xff0…

有赞下拉菜单html,有赞vant-ui Tabs、List、PullRefresh组件实践

Vant ui Vue.js 部分组件实践功能需求是实现一个移动端的栏目列表切换&#xff0c;于此同时列表需要进行下拉刷新&#xff0c;上拉加载如下图&#xff0c;大概是一个这样的东西看起来是挺简单的&#xff0c;实现起来很方便。没错&#xff0c;我当时也是这么想的&#xff0c;结…

第五季1:AP模式USB-WIFI网卡移植与测试

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 内容总结 &#xff08;1&#xff09;HI3518EWIFI做AP&#xff0c;PC做STA&#xff0c;实现局域网内ortp视频传输。 &#xff08;2&#xff09;HI2518EWIFI做STA&#xff0c;PC做STA&#xff0c;外部…