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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中,每一步都有注釋可以看懂;

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。