列表没有使用改造进入recyclerview [英] list is not getting in recyclerview using retrofit

查看:72
本文介绍了列表没有使用改造进入recyclerview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本上我正在尝试使用翻新和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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆