Kotlin 让回收器视图项目在文本视图中显示其位置

Kotlin 让回收器视图项目在文本视图中显示其位置,kotlin,android-recyclerview,position,Kotlin,Android Recyclerview,Position,我有一个recycler视图,其中包含三个文本视图,我希望一个文本视图可以作为添加到recycler视图的每个新项目的计数器。因此,第一个项目应该显示1,第二个项目应该显示2等。到目前为止,我已经尝试使用该位置,但它显示每个项目的位置总数,这意味着如果回收器中有4个项目,则所有4个项目的位置都显示为4 集合文本视图应显示位置 这是适配器: class TrackAdapter(private val context: Context) : RecyclerView.Adapter<Trac

我有一个recycler视图,其中包含三个文本视图,我希望一个文本视图可以作为添加到recycler视图的每个新项目的计数器。因此,第一个项目应该显示1,第二个项目应该显示2等。到目前为止,我已经尝试使用该位置,但它显示每个项目的位置总数,这意味着如果回收器中有4个项目,则所有4个项目的位置都显示为4

集合文本视图应显示位置

这是适配器:

class TrackAdapter(private val context: Context) : RecyclerView.Adapter<TrackAdapter.SetViewHolder>() {

private val inflater: LayoutInflater = LayoutInflater.from(context)
private var todayExercises = emptyList<WorkoutTable>() // Cached copy of words
var mName: String?=null

inner class SetViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    val sets: TextView = itemView.findViewById(R.id.tvSets)
    val weight: TextView = itemView.findViewById(R.id.tvWeight)
    val reps: TextView = itemView.findViewById(R.id.tvReps)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):SetViewHolder {
    val itemView = inflater.inflate(R.layout.track_item, parent, false)
    return SetViewHolder(itemView)
}

override fun onBindViewHolder(holder: SetViewHolder, position: Int) {
    val current = todayExercises[position]
    val sets = todayExercises.size   //attempt to get position for counter

    holder.sets.text = (sets.toString() + " set")  //this is where i tried setting the position
    holder.weight.text = (current.weight.toString() + " lbs")
    holder.reps.text = (current.reps.toString() + " reps")

    holder.itemView.setOnClickListener {




    }

}

internal fun setExercises(exercises: List<WorkoutTable>) {
    this.todayExercises = exercises
    notifyDataSetChanged()
}


override fun getItemCount() = todayExercises.size
类TrackAdapter(私有val上下文:context):RecyclerView.Adapter(){
私有val充气器:LayoutInflater=LayoutInflater.from(上下文)
private var todayExercises=emptyList()//字的缓存副本
变量mName:字符串?=null
内部类SetViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
val集合:TextView=itemView.findViewById(R.id.tvSets)
val权重:TextView=itemView.findViewById(R.id.tvWeight)
val reps:TextView=itemView.findViewById(R.id.tvReps)
}
重写CreateViewHolder(父级:ViewGroup,viewType:Int):SetViewHolder{
val itemView=充气机。充气(R.layout.track_项目,父项,false)
返回SetViewHolder(itemView)
}
覆盖BindViewHolder(holder:SetViewHolder,位置:Int){
val current=今天执行[位置]
val sets=todayExercises.size//尝试获取计数器的位置
holder.sets.text=(sets.toString()+“set”)//这是我尝试设置位置的地方
holder.weight.text=(当前.weight.toString()+“lbs”)
holder.reps.text=(current.reps.toString()+“reps”)
holder.itemView.setOnClickListener{
}
}
内部练习(练习:列表){
this.todayExercises=练习
notifyDataSetChanged()
}
重写fun getItemCount()=todayExercises.size
}


谢谢大家!

您今天正在阅读的集合执行.size,您要求的是列表大小。相反,只需阅读onBindViewHolder类中的position,在每个textViews中获取Positions并使用类似于textView.get(position).nextInt(list.size())

的nextInt将其递增,所以我按照您所说的那样做了:var pos=position holder.sets.text=(pos.toString()+“set”)。。。。我现在的问题是,它从0开始,我如何添加1以使第一个位置为1?我试着在第一个变量中添加一个+1,但它只是将它添加到旁边,给我01,11,21
position
是一个
Int
,所以在将它转换为字符串之前先添加1(比如
val set=position+1
)我无法让它工作,因为某种原因,“nextInt()”函数无法识别。或者我没有正确地输入。。请看一下适配器并使用实际的变量名好吗?