在RecyclerView中动态更新时间格式

时间:2019-01-21 16:14:48

标签: android android-recyclerview

我对我在做什么有些怀疑。我需要通过某些事件(例如在屏幕上点击)更改RecyclerView中的时间格式。如果重要的话,格式会在PrettyTime和SimpleDateFormat之间切换。 Whis是我的代码:

HistoryAdapter

class HistoryAdapter(var items: List<Suspect>) : RecyclerView.Adapter<HistoryHolder>() {
private val pt = PrettyTime()
private val sdf = SimpleDateFormat("HH:mm:ss", Locale.getDefault())

var usePrettyTime = false

override fun getItemCount(): Int {
    return items.size
}

override fun onBindViewHolder(holder: HistoryHolder, position: Int) {
    holder.bind(items[position], usePrettyTime, pt, sdf)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryHolder {
    return HistoryHolder(LayoutInflater.from(parent.context).inflate(R.layout.page_alert, parent, false))
}
}

HistoryHolder

class HistoryHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(suspect: Suspect, usePrettyTime: Boolean, p: PrettyTime, simpleDateFormat: SimpleDateFormat) = with(itemView) {
    ...
    time.text = if (usePrettyTime) {
        prettyTime.format(suspect.date)
    } else {
        simpleDateFormat.format(suspect.date)
    }
    ...
}
}

最后 FooBarEventListener

...
val adapter = suspectListPage.recycler_view.adapter as HistoryAdapter
adapter.usePrettyTime = !adapter.usePrettyTime
adapter.notifyDataSetChanged()
...

可疑对象没有更改,因此在这种情况下我不确定使用adapter.notifyDataSetChanged()是否正确。也许还有更简洁的解决方案?如果我想每秒在整个列表中更新这些标签?

0 个答案:

没有答案