如何将 TimeAgo 格式与 firestore 或实时数据库一起使用?

How to use TimeAgo format with firestore or realtime database?

我正在使用 Github LibraryTextView 的格式显示时间,如刚才、昨天、前一段时间...等。它显示我想要的时间。但问题是时间并没有像刚才在post的那一刻那样改变——它永远保持不变。

型号 class 用于 post 适配器

class Post {
private var date: String = ""
constructor(date: Long) {
fun getDate(): String
    {
        return date
    }

   //Initialization according to the library
    val timeInMillis = System.currentTimeMillis()
    val timeAgo = TimeAgo.using(timeInMillis)


   //saving the data to firestore
    val fStore: FirebaseFirestore = FirebaseFirestore.getInstance()
                    val post = Post(title, description, date = timeAgo)
                    fStore.collection("Posts").document()
                            .set(post)
                            .addOnSuccessListener{...}

正在从 Firestore

中检索数据
private fun postInfo(title: TextView, description: TextView, date: TextView) {
        val postRef = FirebaseFirestore.getInstance().collection("Posts").document()
        postRef.get()
                .addOnSuccessListener { documentSnapshot ->
                    if (documentSnapshot != null && documentSnapshot.exists()) {
                        val post = documentSnapshot.toObject(Post::class.java)
                        date.text = post?.getDate()
                        title.text = post?.getTitle()
                        description.text = post?.getDescription()
                    } 
            }
    }

您所做的是使用库将日期转换为字符串,然后将 TextView 文本设置为该字符串。字符串只是字符列表,它们没有 "consciousness" 关于它们的含义或是否需要 change/update。

我建议使用 android-ago 中的 RelativeTimeTextView。一旦您为该视图设置了参考时间,其中的一些代码会自动为您触发更新。

https://github.com/curioustechizen/android-ago

编辑:您还在 firestore 中存储时从 timeInMillis: Long 转换为 date: String。您应该按原样存储 timeInMillis(Long 值),然后在阅读时将其用作 relativeTimetextView.setReferenceTime(timeInMillis).

的参数