Android fragments 布局未从视图模型获取数据到数据绑定

Android fragments 布局未从视图模型获取数据到数据绑定,android-fragments,kotlin,android-databinding,kotlin-coroutines,android-viewmodel,Android Fragments,Kotlin,Android Databinding,Kotlin Coroutines,Android Viewmodel,我试图学习如何使用modelViewScope和liveData从挂起的db调用中提取数据,并使用收集到的数据从片段绑定视图,以消除设置视图的样板代码。我没有从我的代码中得到任何错误,但是我没有得到我在视图中设置的值 TextView文本将显示@{viewModel.listingDetails.locationAddress,而不是LiveData信息 我遗漏了什么?或者我应该编辑什么以获得正确的值 我的清单存储库代码: interface ListingRepository { ..

我试图学习如何使用modelViewScope和liveData从挂起的db调用中提取数据,并使用收集到的数据从片段绑定视图,以消除设置视图的样板代码。我没有从我的代码中得到任何错误,但是我没有得到我在视图中设置的值

TextView文本将显示@{viewModel.listingDetails.locationAddress,而不是LiveData信息

我遗漏了什么?或者我应该编辑什么以获得正确的值

我的清单存储库代码:

interface ListingRepository {
    ...
    suspend fun getListingDetailsById(id: String): ListingDetailEntries
}
我的片段代码:

class ListingDetailsFragment : ScopedFragment(), KodeinAware {
    override val kodein by closestKodein()
    private val viewModelFactoryInstanceFactory: ((String) -> ListingDetailsViewModelFactory) by factory()
    private lateinit var viewModel: ListingDetailsViewModel
    private val args: ListingDetailsFragmentArgs by navArgs()

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        viewModel = ViewModelProvider(this, viewModelFactoryInstanceFactory(args.id))
            .get(ListingDetailsViewModel::class.java)

        val binding: ListingDetailsFragmentBinding =
            DataBindingUtil.inflate(inflater, R.layout.listing_details_fragment, container, false)
        binding.lifecycleOwner = this
        binding.viewModel = viewModel
        return binding.root
    }
我的ViewModel代码:

class ListingDetailsViewModel(
    private val id: String,
    private val listingRepository: ListingRepository
) : ViewModel() {
    var listingDetails = liveData(Dispatchers.IO) {
        val listing = listingRepository.getListingDetailsById(id)
        emit(listing)
    }
}
我的布局代码:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="viewModel"
            type="com.example.testsentia.ui.detail.ListingDetailsViewModel" />
    </data>

            <TextView
                ...
                android:text="@{viewModel.listingDetails.locationAddress" />
</layout>

当我从片段中观察时,我得到了所需的值,因此我知道数据存在,但我不知道如何正确执行此操作。

//这里缺少右大括号
<TextView
...
android:text="@{viewModel.listingDetails.locationAddress" /> //You're missing closing brace here

我遗漏了什么?
--右大括号。是的,还有添加的String.valueOf谢谢!