我正在使用RecclerView开发一个Android应用程序,并试图在我的ViewHolder类中直接访问视图ID.根据文件,这似乎是可能的:
"ViewHolder描述了一个项目视图和有关其在回收视图中的位置的元数据.
适配器实现应该子类ViewHolder,并添加用于缓存可能代价高昂的结果的字段."
但是,当try 直接访问这些视图时,我收到错误.相关代码如下:
class AnimalAdapter(val animals: MutableList<Animal>) :
RecyclerView.Adapter<AnimalAdapter.AnimalViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AnimalViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.animal_card, parent, false)
return AnimalViewHolder(view)
}
override fun getItemCount(): Int = animals.size
override fun onBindViewHolder(holder: AnimalViewHolder, position: Int) {
holder.bind(animals[position])
}
inner class AnimalViewHolder(itemView: View) :
RecyclerView.ViewHolder(itemView) {
// Setting direct references (causes errors)
// itemView.txt_animal_id =
itemView.findViewById(R.id.txt_animal_id)
// Using findViewById (works, but seems unnecessary)
val animalIdTextView: TextView =
itemView.findViewById(R.id.txt_animal_id)
val calvingDateTextView: TextView =
itemView.findViewById(R.id.txt_calving_date)
// ... other references ...
fun bind(animal: Animal) {
// This generates an error
// itemView.txt_animal_id.text = animal.animalID
// This works, but seems redundant
animalIdTextView.text = animal.animalID
// ... other updates ...
}
}
}
文档显示,这应该是可行的.导致该错误的原因可能是什么?有没有办法直接访问视图ID,或者更新版本的Android Studio不再支持这一功能?
我感谢任何人的帮助或澄清!