Android recyclerView中的ViewModel
我正在使用Android recyclerView中的ViewModel,android,kotlin,android-recyclerview,viewmodel,swiperefreshlayout,Android,Kotlin,Android Recyclerview,Viewmodel,Swiperefreshlayout,我正在使用ViewModel加载数据并将其设置为SwipeRefreshLayout RecyclerView mAdapter = NewRecyclerViewAdapter(listAct, this@MainActivity, hashMap) list?.adapter = mAdapter workViewModel.getRequests()?.observe( this, Observer { resource ->
ViewModel
加载数据并将其设置为SwipeRefreshLayout RecyclerView
mAdapter = NewRecyclerViewAdapter(listAct, this@MainActivity, hashMap)
list?.adapter = mAdapter
workViewModel.getRequests()?.observe(
this, Observer { resource ->
resource?.data?.let {
Log.d(TAG,it.size)
mAdapter.setOrders(it)
}
}
)
workViewModel = ViewModelProviders.of(
this,
ViewModelFactory.getInstance(activity.application)
).get(WorkViewModel::class.java)
.......
swipe_container.setOnRefreshListener {
mAdapter.setWorkOrders(listAct)
mAdapter.notifyDataSetChanged()
}
我使用日志进行调试,它显示大小为2。数据似乎已成功检索,但未设置为recyclerView
适配器
private var order = emptyList<Order>()
......
internal fun setOrders(order: List<Order>) {
this.order = order
this.order.sortedBy { it.created_at }
notifyDataSetChanged()
}
private var order=emptyList()
......
内部订单(订单:列表){
这个订单
this.order.sortedBy{it.created_at}
notifyDataSetChanged()
}
您是否在任何地方使用了yourRecyclerView.setAdapter(mAdapter)
?或者更好:您是否初始化了recyclerview并设置了适配器?如果您正在使用数据绑定,请在recyclerview xml标记中检查适配器atribute您正在设置setOrders()函数中的相同列表
用这个代替你的函数
internal fun setOrders(orders: List<Order>) {
this.order = orders.sortedBy { it.created_at }
notifyDataSetChanged()
}
内部订单(订单:列表){
this.order=orders.sortedBy{it.created_at}
notifyDataSetChanged()
}
将notifyDataSetChanged()放入Oberserver中also@HappySingh添加,结果仍然相同。setOrders()您正在设置相同的订单列表。使用订单而不是order@HappySingh在那里犯了一个错误。发布更新。你能发布完整的代码让它更容易理解吗。是否在此行list?.adapter=mAdapter
Ok 2件事,在您的RecyclerView中检查getItemCount方法,它不应返回0。另一个,请为您的recyclerview使用LayoutManager:示例:rv.LayoutManager=LinearLayoutManager(上下文),然后设置适配器。检查recyclerview高度和宽度,然后问一个问题,为什么要在开始时传递贴图?我需要在onBindView