如何将两个请求主体设置为一个 RecyclerView?

Posted

技术标签:

【中文标题】如何将两个请求主体设置为一个 RecyclerView?【英文标题】:How to set two request bodies to one RecyclerView? 【发布时间】:2022-01-05 00:45:19 【问题描述】:

我有一个继承自PagingDataAdapter的RecyclerView,在adapter里面我有两个viewHolder,它们是按viewType划分的,事实上我写了一个代码,将两个请求的body组合成一个MutableLiveData,然后可以观察到在片段中并通过 submitData 设置其值。

private val _searchResult = MutableLiveData<Resource<PagingData<SearchItems>>>()
val searchResult: LiveData<Resource<PagingData<SearchItems>>> = _searchResult

fun getSearchResult(q: String, id: String) = viewModelScope.launch 
    _searchResult.postValue(Resource.Loading())
    val searchDeferred = async  repository.getSearch(q) 
    val channelsDeferred = async  repository.fetchChannels(id) 

    val search = searchDeferred.await()
    val channels = channelsDeferred.await()

    channels.collect 
        _searchResult.value = Resource.Success(it)
    
    search.collect 
        _searchResult.value = Resource.Success(it)
    

这是 ViewModel 中的代码

viewModel.searchResult.observe(viewLifecycleOwner, 
    when (it) 
        is Resource.Error -> 
            it.message?.let  it1 -> Log.d("mecal", it1) 
        

        is Resource.Success -> 
            lifecycleScope.launch 
                it.data?.map  item ->
                    viewModel.getSearchResult(
                        args.query,
                        item.snippet?.channelId.toString()
                    )
                
                it.data?.let  it1 -> searchAdapter.submitData(it1) 
            
        
    
)

and 是 Fragment 中的代码。关键是这段代码不起作用,即它不在recyclerview中显示数据。但是我不知道我到底做错了什么,如果您有任何建议为什么它不起作用或有其他方法,请写,我真的需要它!

【问题讨论】:

【参考方案1】:

Here我有一些非常相似的东西你需要。这是一个聊天应用程序,它使用相同的RecyclerView 显示2 个不同的viewholders,具体取决于消息是发送给您还是您发送了消息

【讨论】:

感谢您的回答,但这并不能解决我的问题,因为我已经对 ViewHolder 进行了拆分,但是为了显示 ViewHolder 中的数据,我需要将数据设置为来自 api 的适配器 你甚至没有检查代码。我公开了这个存储库,以便您可以看到,因为它与您的要求非常相似。如果你想变得更好,你需要尝试,不要只期望这个网站上的人会写下你需要的解决方案

以上是关于如何将两个请求主体设置为一个 RecyclerView?的主要内容,如果未能解决你的问题,请参考以下文章

带有 WIF 4.5 的 WCF 数据服务;没有为 POST 请求设置主体

如何将自定义请求主体绑定到twilio

fastapi教程翻译(七):Body - 多种参数

将对象列表设置为请求正文:Spring WebClient

如何将我的请求中的安全主体传递到 asp.net MVC 中的线程中

编码请求主体