【问题标题】:How can i pass the data from recyclerview to fragment in android using viewmodel and livedata如何使用viewmodel和livedata将数据从recyclerview传递到android中的片段
【发布时间】:2020-11-27 07:48:15
【问题描述】:

目前,我正在设计购物车...我使用回收站视图来显示所有物品,,, 而且我在 Recycler 视图中添加到购物车按钮,,每当用户单击添加到购物车按钮时,我想增加总项目的 count (总计数按钮出现在 Recycler 视图之外片段)如何将计数值(添加到购物车值)从回收站视图发送到该片段....请帮助我。我是安卓新手

class Myadapter: RecyclerView.Adapter<Myadapter.MyViewHolder>() {
 var items=ArrayList<Data>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
    return MyViewHolder(LayoutInflater.from(parent.context).
    inflate(R.layout.new_resource,parent,false))
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
   var image=view.image
   var Addtocart=view.Addtocart
   
 Addtocart.setOnClickListener{
 count++

}
}
override fun getItemCount(): Int {
   return items.size
}
 fun setListData(data:ArrayList<Data>){
this.items=data

}

【问题讨论】:

  • 您需要在适配器中使用构造函数的回调来通知viewModel它被点击了viewHolder。 ViewModel 收到通知以设置计数购物车 livedata 值(例如,updateCartCounterLiveData)并且片段更新您的徽章计数器购物车。如何创建回调?解决方案在stackoverflow stackoverflow.com/questions/32720702/…

标签: android android-recyclerview


【解决方案1】:

你可以试试这个代码:

class MainFragment : Fragment() {

    private val adapter by lazy {
        MainAdapter(
            ::yourFun
        )
    }
    
    fun yourFun (itemPosition: Int) {
        
    }
}

回收商:

class MainAdapter(private val yourFun: (itemPosition: Int) -> Unit) : RecyclerView.Adapter<Myadapter.MyViewHolder>() {

// other code

inner class ItemViewHolder(item: View) : RecyclerView.ViewHolder(item) {

            // other code

            setOnClickListener { yourFun(position) }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2021-12-26
    • 2020-12-08
    • 2022-07-07
    • 2022-01-21
    • 2021-04-18
    相关资源
    最近更新 更多