当我像在 WhatsApp 中一样滚动 ListView 时,如何在应用程序中显示日期?
为了清楚起见,请参见下图:
当我滚动 ListView 时,日期会显示在列表上。
如果您仍然不明白我的问题,请打开您的 WhatsApp,进入任何群组并开始滚动:您将看到旧文本显示的日期。
最佳答案
val firstVisiblePosition = layoutManager.findFirstVisibleItemPosition()
if (getDateFromFirebaseTime(messageArrayList[firstVisiblePosition].timestamp.toString().toLong()).isNotEmpty()) {
tvDay.visibility = View.VISIBLE
tvDay.text = getDateFromFirebaseTime(messageArrayList[firstVisiblePosition].timestamp.toString().toLong())
} else {
tvDay.visibility = View.GONE
}
我在这里所做的是获取 RecyclerView 列表的第一个可见项目的索引,然后从该索引中获取消息的时间戳并将其显示在 TextView tvDay 使用函数
getDateFromFirebaseTime()
上面的代码是在ScrollListener的RecyclerView的这个方法中添加的
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
Log.d("scroll", "scrolling")
//added here
}
备注 : 这里
tvDay
在 XML 中添加 RecyclerView
可用。 RecyclerView
和 tvDay
是 RelativeLayout
的同一个 child 和 tvDay
设为android:layout_centerHorizontal="true"
将其保持在顶部中心。
关于android - 如何在滚动 ListView 上显示类似 Whatsapp 的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397127/