我对我在做什么有些怀疑。我需要通过某些事件(例如在屏幕上点击)更改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()
是否正确。也许还有更简洁的解决方案?如果我想每秒在整个列表中更新这些标签?