android 列表倒计时
时间: 2023-10-02 22:10:14 浏览: 45
你可以通过使用 `CountDownTimer` 类来实现在 Android 列表中的倒计时功能。以下是一个简单的示例代码:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyItem> mItems;
public MyAdapter(List<MyItem> items) {
mItems = items;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
MyItem item = mItems.get(position);
holder.bind(item);
}
@Override
public int getItemCount() {
return mItems.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private TextView mTitleTextView;
private TextView mCountdownTextView;
private CountDownTimer mCountDownTimer;
public ViewHolder(View itemView) {
super(itemView);
mTitleTextView = itemView.findViewById(R.id.titleTextView);
mCountdownTextView = itemView.findViewById(R.id.countdownTextView);
}
public void bind(MyItem item) {
mTitleTextView.setText(item.getTitle());
if (mCountDownTimer != null) {
mCountDownTimer.cancel();
}
mCountDownTimer = new CountDownTimer(item.getRemainingTime(), 1000) {
@Override
public void onTick(long millisUntilFinished) {
long seconds = millisUntilFinished / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
long days = hours / 24;
String countdownText = String.format(Locale.getDefault(),
"%d days, %d hours, %d minutes, %d seconds",
days, hours % 24, minutes % 60, seconds % 60);
mCountdownTextView.setText(countdownText);
}
@Override
public void onFinish() {
mCountdownTextView.setText("Countdown finished!");
}
};
mCountDownTimer.start();
}
}
}
```
在上面的示例代码中,我们在 `ViewHolder` 类中创建了一个 `CountDownTimer` 对象,并在 `bind` 方法中启动了倒计时。在每次倒计时更新时,我们通过计算剩余时间来更新列表项的倒计时文本。当倒计时结束时,我们在 `onFinish` 方法中更新列表项的倒计时文本。