日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ListViewTimer

列表中每一個item都有計時器 (可實(shí)現(xiàn)倒計時或者計時器的功能)

項目中有時會遇到列表中含有倒計時或者是計時器的需求,實(shí)現(xiàn)的方式有很多種,此Demo中是使用Thread + Handler實(shí)時的對item的局部進(jìn)行

刷新達(dá)到計時或倒計時的功能

本項目中實(shí)現(xiàn)的是計時器功能(當(dāng)前時間距離過去的一個時間的時間差值)

實(shí)現(xiàn)步驟:

1.創(chuàng)建數(shù)據(jù)模型TaskModel

public class TaskModel {

public String timer; //計時器顯示的結(jié)果 10:31:30(時分秒的格式)

public long sendTime = 1547516639000L;//目標(biāo)時間

public long countTime;//long型的時間差值

}

2.獲取服務(wù)器端接口中得到的目標(biāo)時間(最好是long數(shù)據(jù)類型方便加減操作)準(zhǔn)備好數(shù)據(jù);

3.創(chuàng)建Thread,主要是計算當(dāng)前時間和目標(biāo)時間的差值,也就是countTime字段的值;

獲取當(dāng)前時間方法: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這個屬性內(nèi)

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.準(zhǔn)備好數(shù)據(jù),我們就要創(chuàng)建適配器,適配器和普通的適配器一樣,只不過要創(chuàng)建一個ViewHolder的集合mHolderList,在onBindViewHolder方法中將每一個ViewHolder

add進(jìn)mHolderList中

//先判斷集合中是否包含當(dāng)前的ViewHolder

if (!mHolderList.contains(myViewHolder)) {

mHolderList.add(myViewHolder);//添加

}

然后提供一個方法更新item中時間差

/**

* 只刷新item中的計時器數(shù)據(jù)

*/

public void notifyTime() {

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

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

}

}

5.創(chuàng)建Handler,每次收到新的消息就調(diào)用Adapter中的notifyTime方法;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

//優(yōu)化刷新adapter的方法

mAdapter.notifyTime();

break;

}

super.handleMessage(msg);

}

};

6.在之前創(chuàng)建好的Thread中獲取完時間差值之后創(chuàng)建message并發(fā)送給Handler

Message message = new Message();

message.what = 1;

//發(fā)送信息給handler

mHandler.sendMessage(message);

注:Thread中要有一個停止發(fā)送消息的標(biāo)記值endThread,隨著當(dāng)前頁面的生命周期停止Thread

@Override

public void onDestroy() {

super.onDestroy();

myThread.endThread = true;

}

具體的詳細(xì)實(shí)現(xiàn)看Demo中,每一步都有注釋可以看懂;

總結(jié)

以上是生活随笔為你收集整理的android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。