【发布时间】:2021-07-30 07:00:25
【问题描述】:
直到我在短时间内(最多 3 秒)刷新或使用 Handler 和重新 Observe 之前,recyclerview 不会 Observe 数据。否则它只显示一个白屏(空布局)。
请注意,我确信 recyclerview 和 api 都可以正常工作,因为如果我放置处理程序,我会确保显示数据,但仅以这种方式显示。由于Handler 给出了一个非常糟糕的行为,我想摆脱它并找出问题所在。
代码:
API接口:
interface ProductsApi {
@GET("products")
fun get_products_asc(
): Call<List<Product>>
@GET("products?sort=desc")
fun get_products_desc(
): Call<List<Product>>
}
查看模型:
var new_collection_list : MutableLiveData<List<Product>>
init{
new_collection_list = MutableLiveData()
}
fun get_new_collection_data() : MutableLiveData<List<Product>>{
Log.d(TAG, "get_new_collection_data Home: Success Response")
var call = api.get_products_desc()
call.enqueue(object : Callback<List<Product>> {
override fun onResponse(call: Call<List<Product>>, response: Response<List<Product>>) {
if (response.body() != null){
new_collection_list.postValue(response.body()!!)
Log.d(TAG, "Home: Success Response")
}
else{
new_collection_list.postValue(null)
Log.d(TAG, "Home: Null Response")
}
}
override fun onFailure(call: Call<List<Product>>, t: Throwable) {
Log.d(TAG, "Home: Failure Response")
}
})
return new_collection_list
}
片段:
viewModel.get_new_collection_data().observe(viewLifecycleOwner, Observer {
new_collections_adapter.submitList(it)
new_collections_adapter.notifyDataSetChanged()
})
我已经尝试解决这个问题好几天了,如果有任何帮助,我将不胜感激。谢谢。
编辑:我已更新代码以匹配仍然无法正常工作的答案。
代码:
查看模型:
var new_collection_list : MutableLiveData<List<Product>>
init{
new_collection_list = MutableLiveData()
get_new_collection_data()
}
fun get_new_collection_data() {
Log.d(TAG, "get_new_collection_data Home: Success Response")
var call = api.get_products_desc()
call.enqueue(object : Callback<List<Product>> {
override fun onResponse(call: Call<List<Product>>, response: Response<List<Product>>) {
if (response.body() != null){
new_collection_list.postValue(response.body()!!)
Log.d(TAG, "Home: Success Response")
}
else{
new_collection_list.postValue(null)
Log.d(TAG, "Home: Null Response")
}
}
override fun onFailure(call: Call<List<Product>>, t: Throwable) {
Log.d(TAG, "Home: Failure Response")
}
})
}
片段:
viewModel.get_new_collection_data()
viewModel.new_collection_list.observe(viewLifecycleOwner, Observer {
new_collections_adapter.submitList(it)
new_collections_adapter.notifyDataSetChanged()
})
【问题讨论】:
标签: android android-recyclerview retrofit