【问题标题】:ViewModel in recyclerViewRecyclerView 中的 ViewModel
【发布时间】:2019-04-15 15:18:38
【问题描述】:

我正在使用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()
        }

【问题讨论】:

  • 把 notifyDataSetChanged() 也放到 Oberserver 中
  • @HappySingh 添加,结果还是一样
  • 在 setOrders() 中,您正在设置相同的订单列表。使用订单而不是订单
  • @HappySingh 在那里犯了一个错误。帖子已更新。
  • 能否请您发布完整代码,以便于理解

标签: android kotlin android-recyclerview viewmodel swiperefreshlayout


【解决方案1】:

您正在 setOrders() 函数中设置相同的列表 使用 this 而不是你的函数

internal fun setOrders(orders: List<Order>) {
    this.order = orders.sortedBy { it.created_at }
    notifyDataSetChanged()
}

【讨论】:

    【解决方案2】:

    你在任何地方使用yourRecyclerView.setAdapter(mAdapter ) 吗?或者更好:你有没有初始化recyclerview而不是设置适配器?如果您使用数据绑定,请检查 recyclerview xml 标记中的适配器属性

    【讨论】:

    • 是的,我做到了。在这条线上list?.adapter = mAdapter
    • 好的 2 件事,在你的 RecyclerView 检查 getItemCount 方法,它不应该返回 0 。另外,请为您的 recyclerview 设置 LayoutManager:示例:rv.layoutManager = LinearLayoutManager(context) 然后设置您的适配器。
    • 检查recyclerview的高度和宽度
    • 还有一个问题,你为什么一开始就传地图?
    • 我需要在onBindView中使用那个地图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多