【问题标题】:LiveData Obserever catch only first valueLiveData Obserever 仅捕获第一个值
【发布时间】:2018-06-04 02:47:29
【问题描述】:

我从 Firebase 数据库获取问题列表并返回 LiveData

fun getAllIssues(): MutableLiveData<IssueEntity> {
    val issues: MutableLiveData<IssueEntity> = MutableLiveData()
    val issuesReference = FirebaseDatabase.getInstance().reference.child("issues")
    issuesReference.addValueEventListener(object : ValueEventListener {
        override fun onCancelled(p0: DatabaseError?) {

        }

        override fun onDataChange(snapshot: DataSnapshot?) {
            if (snapshot == null) {
                return
            }
            snapshot.children.forEach({
                val issueMessage = it.child("message").value.toString()
                val issueTitle = it.child("title").value.toString()
                val issueOwner = it.child("owner").value.toString()

                issues.postValue(IssueEntity(issueTitle, issueMessage, issueOwner))
            })
        }
    })
    return issues
}

我的活动代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_all_issues)
    val issues: MutableList<IssueEntity> = mutableListOf()
    issuesList.adapter = IssuesAdapter(issues)
    IssueRepository().getAllIssues().observe(this, Observer {
        if (it != null) {
            issues.add(it)
            val issuesAdapter = issuesList.adapter as IssuesAdapter
            issuesAdapter.notifyDataSetChanged()
        }
    })
}

但是观察者只得到第一个值。你能告诉我为什么吗?

【问题讨论】:

    标签: android firebase-realtime-database kotlin android-architecture-components android-livedata


    【解决方案1】:

    很抱歉给您带来了困惑。我只需要返回 MutableLiveData 和 MutableLiveData>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多