recyclerView 中的 ViewModel
ViewModel in recyclerView
我正在使用 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()
}
您在任何地方使用 yourRecyclerView.setAdapter(mAdapter )
吗?或者更好:你有没有初始化 recyclerview 而不是设置适配器?如果您使用数据绑定,请在 recyclerview xml 标签
中检查您的适配器属性
您在 setOrders() 函数中设置了相同的列表
用这个代替你的函数
internal fun setOrders(orders: List<Order>) {
this.order = orders.sortedBy { it.created_at }
notifyDataSetChanged()
}
我正在使用 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()
}
您在任何地方使用 yourRecyclerView.setAdapter(mAdapter )
吗?或者更好:你有没有初始化 recyclerview 而不是设置适配器?如果您使用数据绑定,请在 recyclerview xml 标签
您在 setOrders() 函数中设置了相同的列表 用这个代替你的函数
internal fun setOrders(orders: List<Order>) {
this.order = orders.sortedBy { it.created_at }
notifyDataSetChanged()
}