最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android實(shí)現(xiàn)條目倒計(jì)時(shí)功能

 更新時(shí)間:2019年09月20日 12:02:24   作者:like1521  
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)條目倒計(jì)時(shí)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

網(wǎng)上對于這樣的功能已經(jīng)是泛濫成河了,但是最近遇到這樣的一個(gè)需求,還是要值得我們學(xué)習(xí)一下,并將他記錄下來。

布局文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.example.rui.demo.list_count_down.ListCountDownActivity">

 <android.support.v7.widget.RecyclerView
 android:id="@+id/rv_list_count_down"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 </android.support.v7.widget.RecyclerView>
</FrameLayout>

Activity界面:

public class ListCountDownActivity extends AppCompatActivity {

 RecyclerView mRecyclerView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_list_count_down);
 initView();

 }

 private void initView() {
 mRecyclerView = (RecyclerView) findViewById(R.id.rv_list_count_down);
 mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
 CountDownAdapter adapter = new CountDownAdapter();
 mRecyclerView.setAdapter(adapter);
 List<DataInfo> list = new ArrayList<>();
 for (int i = 1; i < 101; i++) {
  list.add(new DataInfo("我是條目" + i, i * 100));
 }
 adapter.setmDatas(list);
 }
}

倒計(jì)時(shí)條目適配器:

/**
 * @Date 2018/4/26
 * @Introduction 倒計(jì)時(shí)條目適配器
 */

public class CountDownAdapter extends RecyclerView.Adapter<CountDownAdapter.MyViewHoder> {

 private final String TAG = CountDownAdapter.class.getSimpleName();

 private final int STOP = 0x01;
 private final int START = 0x02;
 private final int LOOP = 0x03;

 private List<DataInfo> mDatas;

 public CountDownAdapter() {
 }

 public void setmDatas(List<DataInfo> mDatas) {
 this.mDatas = mDatas;
 notifyDataSetChanged();
 }

 @Override
 public MyViewHoder onCreateViewHolder(ViewGroup parent, int viewType) {
 return new MyViewHoder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_count_down, parent, false));
 }

 @Override
 public void onBindViewHolder(final MyViewHoder holder, int position) {
 final DataInfo info = mDatas.get(position);
 holder.tvName.setText(info.getName());
 holder.tvTime.setText(info.getTime() + "");
 if (info.isCountDown()) {
  holder.btnStart.setText("停止");
 } else {
  holder.btnStart.setText("開始");
 }
 holder.btnStart.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
  Message msg = Message.obtain();
  if (!info.isCountDown()) {
   holder.btnStart.setText("停止");
   msg.what = START;
  } else {
   holder.btnStart.setText("開始");
   msg.what = STOP;
  }
  msg.obj = info;
  mHandler.sendMessage(msg);
  info.setCountDown(!info.isCountDown());
  }
 });
 }

 @Override
 public int getItemCount() {
 return mDatas == null ? 0 : mDatas.size();
 }

 static class MyViewHoder extends RecyclerView.ViewHolder {

 private final TextView tvName;
 private final TextView tvTime;
 private final Button btnStart;

 public MyViewHoder(View itemView) {
  super(itemView);
  tvName = (TextView) itemView.findViewById(R.id.tv_name_count_down_item);
  tvTime = (TextView) itemView.findViewById(R.id.tv_time_count_down_item);
  btnStart = (Button) itemView.findViewById(R.id.btn_time_count_down_item);
 }
 }

 private Handler mHandler = new Handler() {

 private List<DataInfo> mCountDownList = new ArrayList<>();

 @Override
 public void handleMessage(Message msg) {
  setChange(msg);
 }

 private synchronized void setChange(Message msg) {
  switch (msg.what) {
  case STOP:
   DataInfo stopInfo = (DataInfo) msg.obj;
   Log.e(TAG, "------------stop:" + stopInfo.getName());
   mCountDownList.remove(stopInfo);
   notifyDataSetChanged();
   if (mCountDownList.size() <= 0) {
   mHandler.removeCallbacksAndMessages(null);
   }
   break;
  case START:
   DataInfo startInfo = (DataInfo) msg.obj;
   Log.e(TAG, "------------start:" + startInfo.getName());
   if (startInfo.getTime() > 0) {
   mCountDownList.add(startInfo);
   mHandler.sendEmptyMessageDelayed(LOOP, 1000);
   }
   break;
  case LOOP:
   if (mCountDownList.size() <= 0) {
   return;
   }
   for (Iterator<DataInfo> iterator = mCountDownList.iterator(); iterator.hasNext(); ) {
   DataInfo dataInfo = iterator.next();
   int time = dataInfo.getTime();
   time--;
   dataInfo.setTime(time);
   if (time <= 0) {
    iterator.remove();
   }
   }
   notifyDataSetChanged();
   mHandler.removeCallbacksAndMessages(null);
   mHandler.sendEmptyMessageDelayed(LOOP, 1000);
   break;
  default:
   break;
  }
 }
 };
}

JavaBean類

/**
 * @Date 2018/4/26
 * @Introduction 倒計(jì)時(shí)數(shù)據(jù)實(shí)體類
 */

public class DataInfo {
 private String name;
 private int time;
 private boolean isCountDown = false;

 public DataInfo(String name, int time) {
 this.name = name;
 this.time = time;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public int getTime() {
 return time;
 }

 public void setTime(int time) {
 this.time = time;
 }

 public boolean isCountDown() {
 return isCountDown;
 }

 public void setCountDown(boolean countDown) {
 isCountDown = countDown;
 }
}

以上就是條目中倒計(jì)時(shí)的一個(gè)小Demo。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • android文件上傳示例分享(android圖片上傳)

    android文件上傳示例分享(android圖片上傳)

    最近在做項(xiàng)目是用到Android上傳功能,就寫了個(gè)Android上傳組件,支持拍照錄用錄視頻和選擇文件,需要的朋友可以參考下
    2014-04-04
  • Android實(shí)現(xiàn)簡易的計(jì)算器

    Android實(shí)現(xiàn)簡易的計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡易的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 詳解Android官方架構(gòu)中UseCase

    詳解Android官方架構(gòu)中UseCase

    這篇文章主要為大家介紹了Android?官方架構(gòu)中的?UseCase?該怎么寫示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Android 使用Glide加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法

    Android 使用Glide加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法

    這篇文章主要介紹了Android 使用Glide加載網(wǎng)絡(luò)圖片等比例縮放的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-08-08
  • Android實(shí)現(xiàn)TextView兩端對齊的方法

    Android實(shí)現(xiàn)TextView兩端對齊的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)TextView兩端對齊的方法,需要的朋友可以參考下
    2016-01-01
  • Flutter?點(diǎn)擊兩次退出app的實(shí)現(xiàn)示例

    Flutter?點(diǎn)擊兩次退出app的實(shí)現(xiàn)示例

    本文主要介紹了Flutter?點(diǎn)擊兩次退出app的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Android Studio 利用Splash制作APP啟動界面的方法

    Android Studio 利用Splash制作APP啟動界面的方法

    這篇文章主要介紹了Android Studio 利用Splash制作APP啟動界面,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Android開發(fā)flow常見API的使用示例詳解

    Android開發(fā)flow常見API的使用示例詳解

    這篇文章主要為大家介紹了Android開發(fā)flow常見API的使用示例詳解,希望能夠幫助大家更好的掌握flow使用,熟練的應(yīng)用于各種場景,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Android自定義 WebView瀏覽器

    Android自定義 WebView瀏覽器

    WebView是Android中一個(gè)非常實(shí)用的組件,它和Safai、Chrome一樣都是基于Webkit網(wǎng)頁渲染引擎。接下來通過本文給大家介紹android自定義webview瀏覽器,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Android控件ToggleButton多狀態(tài)按鈕使用詳解

    Android控件ToggleButton多狀態(tài)按鈕使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android控件ToggleButton多狀態(tài)按鈕的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

漳州市| 遂平县| 宁津县| 乐都县| 府谷县| 德保县| 霸州市| 十堰市| 嘉黎县| 东阿县| 毕节市| 屯门区| 邹平县| 临高县| 神池县| 辽源市| 孝义市| 定南县| 隆德县| 阿图什市| 盐城市| 千阳县| 湄潭县| 曲靖市| 普格县| 修武县| 堆龙德庆县| 寿阳县| 廊坊市| 莎车县| 屯门区| 延长县| 沐川县| 七台河市| 福建省| 丹江口市| 余江县| 长武县| 虹口区| 枣强县| 漳平市|