Android-实时数据无法与recyclerview一起使用

问题描述

LiveData没有触发。我在同一片段中运行了许多实时数据,但其中之一只是无法正常工作。我不知道是什么问题。

ViewModel.kt(部分代码已减少。)

class MyAccountViewModel : ViewModel() {

    private val _dataUser = MutableLiveData<User>()
    val dataUser: LiveData<User>
        get() = _dataUser

    private val _userState = MutableLiveData<UserViewState>()
    val userState: LiveData<UserViewState>
        get() = _userState

    private val _storiesState = MutableLiveData<StoriesViewState>()
    val storiesState: LiveData<StoriesViewState>
        get() = _storiesState

    private val _dataStories = MutableLiveData<List<Stories>>()
    val dataStories: LiveData<List<Stories>>
        get() = _dataStories

    private val _navigateToStories = MutableLiveData<Long>()
    val navigateToStories: LiveData<Long>
        get() = _navigateToStories

    fun openUserStories(userId: Long) {
        _navigateToStories.postValue(userId)
    }

 }

片段

override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
    super.onViewCreated(view,savedInstanceState)
      observe(viewModel.dataUser,::onViewUserDataChanged) //WORKING
      observe(viewModel.userState,::onViewUserStateChanged) //WORKING
      observe(viewModel.dataStories,::onViewStoriesDataChanged) //WORKING 
      observe(viewModel.storiesState,::onViewStoriesStateChanged) //WORKING
      observe(viewModel.navigateToStories,::onViewEvent) //NOT WORKING
}

 private fun onViewEvent(viewEvent: Long) {
       findNavController().navigate(
          MyAccountFragmentDirections.
           actionMyAccountFragmentToMediaShowFragment(viewEvent)
        )
 }

observe()方法:

fun <T> LifecycleOwner.observe(liveData: LiveData<T>,observer: (T) -> Unit) {
    liveData.observe(this,Observer {
        it?.let { t -> observer(t) }
    })
}


fun <T> LifecycleOwner.observe(liveData: MutableLiveData<T>,Observer {
        it?.let { t -> observer(t) }
    })
}

具有数据绑定的onClick(已减少了部分代码。):

<androidx.constraintlayout.widget.ConstraintLayout
        android:onClick="@{() -> viewModel.openUserStories(stories.id)}"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

 </androidx.constraintlayout.widget.ConstraintLayout>

这是我应用onClick方法的recyclerview项。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...