Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android recyclerView中的ViewModel_Android_Kotlin_Android Recyclerview_Viewmodel_Swiperefreshlayout - Fatal编程技术网

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