I'm using ViewModel
to load data and set it into 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()
}
I use the log to debug, it display size 2. Data seems successful to retrieve, but it did not set to the recyclerView
.
Adapter
private var order = emptyList<Order>()
......
internal fun setOrders(order: List<Order>) {
this.order = order
this.order.sortedBy { it.created_at }
notifyDataSetChanged()
}
You are setting the same list in your setOrders() functions Use this instead of your function
internal fun setOrders(orders: List<Order>) {
this.order = orders.sortedBy { it.created_at }
notifyDataSetChanged()
}