【发布时间】:2021-09-06 17:13:58
【问题描述】:
基本上我有两个问题......我认为两个答案都有相似的方法。这就是为什么要同时询问。
第 1 部分-
我在 Fragment 中有一个 RecyclerView,其项目有一个倒数计时器,并且按剩余时间的升序排列。 我希望在倒计时归零后*(或者更好地说,当倒计时结束时)Recyclerview 应该等待 5 seconds * 将项目放在顶部,然后过期项目的可见性应该是不可见的,底部的项目应该替换它的位置...
在我再次启动我的应用程序后,它应该永远不可见。
第 2 部分-
在这种情况下,我希望过期的项目应该下降到回收器视图中项目的bottom of the queue。
请注意,notifyDataSetChanged() 在此之后应该可以正常工作。
请帮助我,我自几周以来一直在尝试实现这一点,但每次都失败了。
我尝试过的工作正常,但是每当我再次打开应用程序或在片段之间切换时,它会显示旧的过期项目,将它们保持 5 秒钟然后隐藏它们。
这是我的 onBindviewHolder 方法- [1]:https://i.stack.imgur.com/Rd0rR.png [![这是带有计时器的虚拟 Recylerview][1]][1]
@Override
public void onBindViewHolder(@NonNull Holder holder, int position) {
UserDetail userDetail = UserArrayList.get(position);
long timer = userDetail.getCategoryTime().toDate().getTime();
Date today = new Date();
final long currentTime = today.getTime();
long expiryTime = timer - currentTime;
new CountDownTimer(expiryTime, 1000) {
public void onTick(long millisUntilFinished) {
//do something
}
public void onFinish() {
holder.itemView.setEnabled(false);
holder.ques_time_h.setText("Time up!");
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
holder.itemView.setVisibility(View.GONE);
ViewGroup.LayoutParams params = holder.itemView.getLayoutParams();
params.height = 0;
}
}, 5000);
}
}.start();```
【问题讨论】:
标签: android-studio android-layout android-recyclerview