zoukankan      html  css  js  c++  java
  • 【kotlin】adapterPosition方法返回-1 无法获取位置

    在学习使用RecyclerView时

    对Adapter的几个主要方法进行重写

    通过使用书中的例子

    在onCreateViewHolder中使用

    viewHolder.itemView.setOnClickListener { 
        val position = viewHolder.adapterPosition
        val fruit = fruitList[position]
        Toast.makeText(parent.context,"You clicked view " +  fruit.name, Toast.LENGTH_SHORT).show()
    }
    

    然而不知什么原因

    获取到的position值总是-1

    最后通过各种查询都没找到直接的解决办法(没有代码可以直接抄

    但是收获了解决的思路就是尝试在onBindViewHolder中实现

    holder.itemView.setOnClickListener { 
        val position = holder.adapterPosition
        val fruit = fruitList[position]
        Toast.makeText(holder.itemView.context,"You clicked view " +  fruit.name, Toast.LENGTH_SHORT).show()
    }
    

    下面给出重写的onBindViewHolder的完整代码

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val fruit = fruitList[position]
        holder.fruitImage.setImageResource(fruit.imageId)
        holder.fruitName.text = fruit.name
        holder.itemView.setOnClickListener{
              val position = holder.adapterPosition
              val fruit = fruitList[position]
              Toast.makeText(holder.itemView.context,"You clicked view " +  fruit.name, Toast.LENGTH_SHORT).show()
    
        }
        holder.fruitImage.setOnClickListener{
         val position = holder.adapterPosition 
            val fruit = fruitList[position]
            Toast.makeText(holder.itemView.context,"You clicked view " +  fruit.name, Toast.LENGTH_SHORT).show()
    
        }
    }
    

     

    注: onCreateViewHolde方法中的parent.context就相当于onBindViewHolder中的holer.itemView.context

    (可能描述不是很准确,但效果是相当的

  • 相关阅读:
    刷题总结——蚯蚓(NOIP2016DAY2T2)
    刷题总结——愤怒的小鸟(NOIPDAY2T3)
    算法复习——高斯消元(ssoi)
    算法复习——高精度集合
    刷题总结——系列维护(ssoi)
    刷题总结——传送带(四川省选)
    算法复习——数位dp(不要62HUD2089)
    算法复习——单调队列(sliding windows,ssoi)
    刷题总结——road(ssoi)
    linux命令学习笔记(61):tree 命令
  • 原文地址:https://www.cnblogs.com/leftstan/p/13921914.html
Copyright © 2011-2022 走看看