android - 如何在滚动 ListView 上显示类似 Whatsapp 的日期

标签 android android-layout listview android-fragments android-adapter

当我像在 WhatsApp 中一样滚动 ListView 时,如何在应用程序中显示日期?
为了清楚起见,请参见下图:

enter image description here

当我滚动 ListView 时,日期会显示在列表上。
如果您仍然不明白我的问题,请打开您的 WhatsApp,进入任何群组并开始滚动:您将看到旧文本显示的日期。

enter image description here

最佳答案

enter image description here

要显示像此屏幕截图这样的日期,您可以使用

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可用。 RecyclerViewtvDayRelativeLayout 的同一个 child 和 tvDay设为android:layout_centerHorizontal="true"将其保持在顶部中心。

关于android - 如何在滚动 ListView 上显示类似 Whatsapp 的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397127/

相关文章:

c# - Android 模拟器没有响应 Xamarin 的 AMD 进程的问题

Android - 如何适应不同屏幕尺寸的布局

java - ListView 中的微调器似乎出现在 ListView 之外

android - 从对象的arraylist填充listview

java - 将列表项动态添加到 baseadapter android

java - Android 上的 TCP 套接字连接被拒绝

android - Horizo​​ntalScrollView 每 2 分钟自动滚动一次

android - React Native Flat List 调整元素大小

android - 无法更改 RatingBar 的宽度和星星数

java - 单击旁边的自定义对话框会消失