Java timstamp在recyclerview中不断变化
我有一个recyclerview,它有50多个数据。这里我显示了时间戳的差异Java timstamp在recyclerview中不断变化,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有一个recyclerview,它有50多个数据。这里我显示了时间戳的差异 new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { @Override public void run() { try{ long mtime = TimeUnit.MILLISECONDS.toMinutes(System
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
try{
long mtime = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis())-TimeUnit.MILLISECONDS.toMinutes(Long.parseLong(time));
if (mtime<60){
holder.timestamp.setText(String.valueOf(mtime)+ " mins");
if (mtime==1)
holder.timestamp.setText(1+ " min");
else if (mtime<1){
holder.timestamp.setText("Just Now");
}
else
holder.timestamp.setText(mtime+ " mins");
}
else if (mtime>60 && mtime<1440){
if (mtime/60==1)
holder.timestamp.setText(String.valueOf(mtime/60)+ " hour");
else
holder.timestamp.setText(String.valueOf(mtime/60)+ " hours");
}
else if (mtime>1440&&mtime<10080){
if (mtime/1440==1)
holder.timestamp.setText(String.valueOf(mtime/1440)+ " day");
else
holder.timestamp.setText(String.valueOf(mtime/1440)+ " days");
}else if(mtime>10080&&mtime<3679200){
if (mtime/10080==1)
holder.timestamp.setText(String.valueOf(mtime/10080)+ " week");
else
holder.timestamp.setText(String.valueOf(mtime/10080)+ " weeks");
}else if(mtime>3679200){
if (mtime/3679200==1)
holder.timestamp.setText(String.valueOf(mtime/3679200)+ " year");
else
holder.timestamp.setText(String.valueOf(mtime/3679200)+ " years");
}
}catch (Exception e){
}
h.postDelayed(this,1000);
}
},1000);
newhandler(Looper.getMainLooper()).postDelayed(newrunnable()){
@凌驾
公开募捐{
试一试{
long mtime=TimeUnit.millides.toMinutes(System.currentTimeMillis())-TimeUnit.millides.toMinutes(long.parseLong(time));
如果(mtimeyes,因为您正在使用new处理程序(Looper.getMainLooper()).postDelayed()
。为什么在此处使用Handler
?UI线程中已经调用了RecyclerView适配器
回调
正如我在代码中看到的,每次滚动时,时间戳都会在1s后显示。如果滚动速度快(实际上一直如此),1s后,行视图就会被重用并显示另一项
因此,要解决您的问题,您需要删除代码中的处理程序。您可能希望将System.currentTimeMillis()
存储为循环之外的值
它仍在重复其他值@scarywombat在这种情况下,每1秒重复一次应该使用什么?