我已经寻找了这个问题的解决方案,但找不到答案。我可以从适配器的onBindViewHolder
内部让我的onClickListener
工作(Kotlin),但onLongClickListener
(Kotlin)没有响应,即使代码没有显示错误
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val ingredientdisplay=displayItems[position]
holder.setData(ingredientdisplay,position)
runningTotal=runningTotal+holder.itemView.tvcost.text.toString().toDouble()
println ("running total $runningTotal")
val intent = Intent("message_from_displayadapter")
intent.putExtra("runningtotal", runningTotal)
LocalBroadcastManager.getInstance(context).sendBroadcast(intent)
holder.itemView.setOnLongClickListener {view->
println("longclick")
true
}
holder.itemView.setOnClickListener {
val intent = Intent(context, ChooseIngredientsActivity::class.java)
ContextCompat.startActivity(context, intent, null)
}
}
我只是尝试println
或运行Toast
,但什么也没发生。
我不明白为什么?你的帮助将不胜感激。
4条答案
按热度按时间oxiaedzo1#
首先,不要将您的
onClicklistiner
放在onBindViewHolder
中,这不是一个好的做法,请像这样更新您的适配器类,OnLongclicklistiner
也工作正常kwvwclae2#
我已经把监听器移到了内部类中,完整适配器的代码如下所示。但是onLongClicListener仍然没有响应。
类RecipiesDisplayAdapter(瓦尔为上下文:上下文,值为显示项:列表):循环视图.适配器(){
我不知道为什么!
xqkwcwgp3#
问题解决了。我犯了一个新手错误。我把所有的onclicklistener添加到我的适配器中。然后后来又开始添加onlongclicklistener到它们中。信不信由你。我把它设置在了错误的适配器中。为你的麻烦道歉,但是你的答案很有帮助。
deyfvvtc4#
上下文有时不起作用或在较新版本中不起作用,因此您也可以使用
吐司.makeText(it.context,“长时间点击”,Toast.长度_短).show()