列表未使用改造进入 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 中删除适配器。
基本上我正在尝试使用改造和视图模型在 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 中删除适配器。