我正在開發一個簡單的應用程式來熟悉 Android 中的 RecyclerView。在我的配接器中覆寫 onBindViewHolder 方法時,Android Studio 無法識別與其應系結資料的元素對應的 id。
布局資源檔案 (list_item.xml):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@ id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
配接器類:
class ListAdapter(private var list: List<String>)
: RecyclerView.Adapter<ListAdapter.ListViewHolder>(){
inner class ListViewHolder(itemView : View)
: RecyclerView.ViewHolder(itemView)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
return ListViewHolder(view)
}
override fun onBindViewHolder(holder: ListViewHolder, position: Int) {
holder.itemView.apply {
item_name.text = list[position] // item_name is unresolved reference
}
}
override fun getItemCount(): Int {
return list.size
}
}
為什么 Android Studio 不能識別布局資源檔案中元素的 id?我已經使快取無效并重新啟動,我還清理了專案并重建了。
uj5u.com熱心網友回復:
在 build.gradle (module) 中添加 kotlin-android-extensions 插件:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
uj5u.com熱心網友回復:
您尚未在視圖持有者類中添加文本視圖
inner class ListViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){
val itemName = itemView.findViewById<TextView>(R.id.item_name) // this line
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
return ListViewHolder(view)
}
override fun onBindViewHolder(holder: ListViewHolder, position: Int) {
holder.itemName.text = list[position]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411102.html
標籤:
