列表没有使用改造进入recyclerview [英] list is not getting in recyclerview using retrofit
问题描述
基本上我正在尝试使用翻新和viewmodel在recyclerview中显示列表....
basically im trying display list in recyclerview using retrofit and viewmodel........
关于调试即时响应即时消息200 response
,但是为什么它不在recyclerview中显示列表,我不知道即时消息出了错
on debugging the onresponse im getting 200 response
but why is it not displaying list in recyclerview i dont know where im going wrong
如果需要,我会发布更多代码
i will post up more codes if needed
以下是代码:---
class Tables : BaseClassActivity() {
lateinit var recyclerView: RecyclerView
lateinit var recyclerAdapter: TableAdapter
var Tablelist : MutableList<Tabledata> = mutableListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.table_activity)
var mActionBarToolbar = findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbartable);
setSupportActionBar(mActionBarToolbar);
setScreenTitle("Tables")
recyclerView = findViewById(R.id.recyleview)
val model = ViewModelProviders.of(this)[HeroViewModel::class.java]
model.heroes?.observe(this,object :Observer<Table_response>{
override fun onChanged(t: Table_response?) {
recyclerAdapter = TableAdapter(applicationContext, Tablelist)
recyleview.layoutManager = LinearLayoutManager(applicationContext)
recyclerView.addItemDecoration(
DividerItemDecoration(
recyclerView.context,
DividerItemDecoration.VERTICAL
)
)
recyleview.adapter = recyclerAdapter }
})
}
HeroViewModel:-
HeroViewModel:--
class HeroViewModel : ViewModel() {
var recyclerAdapter: TableAdapter?=null
private var heroList: MutableLiveData<Table_response>? = null
val heroes: MutableLiveData<Table_response>?
get() {
//if the list is null
if (heroList == null) {
heroList = MutableLiveData<Table_response>()
//we will load it asynchronously from server in this method
loadHeroes()
}
//finally we will return the list
return heroList
}
//This method is using Retrofit to get the JSON data from URL
private fun loadHeroes() {
RetrofitClient.instance.getAllPhotos(product_category_id = "1", value = 1).enqueue(
object : Callback<Table_response> {
override fun onFailure(call: Call<Table_response>, t: Throwable) {
}
override fun onResponse(
call: Call<Table_response>,
response: Response<Table_response>
) {
if (response.body() != null) {
val res = response
heroList!!.value = response.body()
recyclerAdapter?.setMovieListItems((response.body()?.data as MutableList<Tabledata>?)!!)
}
}
})
}
}
需要帮助谢谢....
推荐答案
每当您在Activity中具有onChanged()
回调时,您都将传递空列表,并且您尝试设置从未创建的ViewModel对TableAdapter的响应.您不应该这样做,应该做的是移动以下代码:
You are passing empty list every time you have onChanged()
callback in your Activity, and you are trying to set the response on TableAdapter from ViewModel that is never created. You shouldn't do this, what you should do is you should move this code:
recyclerAdapter?.setMovieListItems((response.body()?.data as MutableList<Tabledata>?)!!)
在这里:
model.heroes?.observe(this,object :Observer<Table_response>{
override fun onChanged(t: Table_response?) {
recyclerAdapter = TableAdapter(applicationContext, Tablelist)
recyleview.layoutManager = LinearLayoutManager(applicationContext)
recyclerView.addItemDecoration(
DividerItemDecoration(
recyclerView.context,
DividerItemDecoration.VERTICAL
)
)
recyclerAdapter.setMovieListItems(t?.data as MutableList<Tabledata>?)
recyleview.adapter = recyclerAdapter }
})
然后从ViewModel中删除适配器.
And remove the adapter from ViewModel.
这篇关于列表没有使用改造进入recyclerview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!