如何在适配器中的kotlin中提供长时间单击侦听器

gfttwv5a  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(330)

如何在适配器中实现长时间单击侦听器?我已经通过接口实现了onclicklister。但我不知道如何实现长点击侦听器。
这是适配器

  1. class DokladAdapter(private val listener: OnItemClickListener): ListAdapter<DokladTuple, DokladAdapter.PolozkaViewHolder>(DiffCallback()) {
  2. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PolozkaViewHolder {
  3. val binding = DokladyItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
  4. return PolozkaViewHolder(binding)
  5. }
  6. override fun onBindViewHolder(holder: PolozkaViewHolder, position: Int) {
  7. val currentItem = getItem(position)
  8. if (currentItem != null) {
  9. holder.bind(currentItem)
  10. }
  11. }
  12. inner class PolozkaViewHolder(private val binding: DokladyItemBinding): RecyclerView.ViewHolder(binding.root) {
  13. init {
  14. binding.root.setOnClickListener{
  15. val position = bindingAdapterPosition
  16. if (position != RecyclerView.NO_POSITION){
  17. val item = getItem(position)
  18. if (item != null){
  19. listener.onItemClick(item)
  20. }
  21. }
  22. }
  23. }
  24. fun bind(polozkaHlavicka: DokladTuple){
  25. binding.apply {
  26. tvU.text = "U"
  27. tvDOKL.text = polozkaHlavicka.doklad.toString()
  28. //tvODB.text = "200"
  29. tvORG.text = polozkaHlavicka.odj.toString()
  30. tvDATUM.text = polozkaHlavicka.datuct.toString()
  31. }
  32. }
  33. }
  34. interface OnItemClickListener{
  35. fun onItemClick(polozkaHlavicka: DokladTuple)
  36. }
  37. class DiffCallback: DiffUtil.ItemCallback<DokladTuple>(){
  38. override fun areItemsTheSame(oldItem: DokladTuple, newItem: DokladTuple) =
  39. oldItem.doklad == newItem.doklad
  40. override fun areContentsTheSame(oldItem: DokladTuple, newItem: DokladTuple) =
  41. oldItem == newItem
  42. }
  43. }

我在活动中有覆盖功能

  1. class Activity: AppCompatActivity(), PolozkaAdapter.OnItemClickListener{
  2. override fun onItemClick(polozkaDoklad: PolozkaTuple) {
  3. //TODO - do something
  4. }
  5. }
eeq64g8w

eeq64g8w1#

更新您的 OnItemClickListener 将长单击处理程序包括为

  1. interface OnItemClickListener{
  2. fun onClick(polozkaHlavicka: DokladTuple)
  3. fun onLongClick(polozkaHlavicka: DokladTuple)
  4. }

现在在
PolozkaViewHolder init 添加 longClickListener 作为

  1. binding.root.setOnLongClickListener{
  2. // get position data and call long click handler
  3. //listener.onLongClick()
  4. }

最后更新的实现 OnItemClickListener 在里面 Activity 对于 onLongClick

相关问题