列表未使用改造进入 recyclerview

list is not getting in recyclerview using retrofit

基本上我正在尝试使用改造和视图模型在 recyclerview 中显示列表......

在调试 onresponse 时我得到 200 response 但为什么它不在 recyclerview 中显示列表 我不知道我哪里出错了

如果需要,我会post提供更多代码

代码如下:---

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:--

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 上的响应。你不应该这样做,你应该做的是你应该移动这段代码:

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 中删除适配器。