我有一个 RecyclerView,它显示带有标题、文本和上次编辑时间的项目。
在 RecyclerView 适配器的 onBindViewHolder 中,我使用getRelativeTimeSpanString
笔记对象的时间并将其与当前时间进行比较:
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Note note = getItem(position);
holder.title.setText(note.getTitle());
holder.text.setText(note.getText());
String s = DateUtils.getRelativeTimeSpanString(note.getTime(),
System.currentTimeMillis(), 0L, DateUtils.FORMAT_ABBREV_ALL).toString();
holder.timestamp.setText(s);
}
如果我刚刚添加了该项目,它会显示“0 秒前”。我如何随着时间的推移更新它?
在写这个问题时,SO提出了这个问题:Updating the relative time in android,但是我不认为每X秒更新一次 RecyclerView 是最好的主意:
- 它会耗尽电池
- 它更新不需要更新的项目(例如,上次更新是 6 小时前,但它
holder.timestamp
每 X 秒更新一次)
有没有更有效的方法来实现这一点?