我的适配器中有以下逻辑:
val listItem = modelCart[position]
var number = 0
holder.btnAdd.setOnClickListener {
val textNumber = number++
listItem.amount = textNumber.toString()
holder.amount.text = listItem.amount
}
我的目的是当对每个项目调用clicklistener(btnadd)时,该位置的数量增加一个。
在上面的逻辑中没有问题,调用clicklistner时每个项目的数量增加一个。
但是我认为最好不要直接向适配器声明逻辑。我正在使用一个接口在相应的片段中声明上面的逻辑。
所以我在适配器中声明了一个接口:
clicklistner界面
interface ClickListener {
fun onClick(modelCart: ModelCart , textView: TextView)
}
在我的构造函数适配器中声明一个示例:
class MarketAdapter(
private val modelCart: List<ModelCart> , private val clickListener: ClickListener
)
下面的代码可以更好地看到我的适配器:
class ViewHolder(itemview: View) : RecyclerView.ViewHolder(itemview)
val amount = itemview.amount_market
val btnAdd = itemview.add_market
override fun onBindViewHolder(holder: ViewHolder, position: Int)
val listItem = modelCart[position]
// where the clickListner called .
holder.btnAdd.setOnClickListener {
clickListener.onClick(listItem , holder.amount)
}
在我的片段中我得到了接口:
val list = ArrayList<ModelCart>()
for (i in 0..50) {
list.add(ModelCart(amount = "0", title ="pizza",price = "10$",image = R.drawable.pizza))
}
model = list
recyclerView = view.findViewById(R.id.recyclerView_Market)
recyclerView.layoutManager =
LinearLayoutManager(view.context, LinearLayoutManager.VERTICAL, false)
recyclerView.adapter =
MarketAdapter(model, object : ClickListener{
var number = 0
override fun onClick(modelCart: ModelCart , textView: TextView) {
modelCart.amount = number++.toString()
textView.text = modelCart.amount
}
})
这个逻辑不好用!!!我不知道这里到底发生了什么。
这必须是这样的:每次调用clicklistner时,每个位置的数量都应该增加。但这不是真的!!!第二个逻辑怎么了?我怎样才能解决这个问题?
如果有人能帮我,我会非常感激的。
1条答案
按热度按时间2q5ifsrm1#
你为什么不把你的听众传给你的听众?
在您的viewholder中:
碎片/活动
对于初始化:
我认为你的代码很好,但我不理解你的回调/接口clicklistener。我写得很快,可能有语法错误