java.lang.IllegalStateException:TextView不能为null(Android/Kotlin)

kok*_*yaa 12 android kotlin recycler-adapter android-recyclerview

我的Recycler View有以下ViewHolder类,

inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        private val dateText = itemView.itemDateSummaryList
        private val systolicVal = itemView.systolicValue
        private val diastolicVal = itemView.diastolicValue

        fun update(listItem: SummaryListItemModel) {
            Log.i(TAG, "Update method called " + listItem.date)
            dateText.text = listItem.date
            systolicVal.text = listItem.sysVal.toInt().toString()
            diastolicVal.text = listItem.diasVal.toInt().toString()
        }

    }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该应用程序时,该dateText.text = listItem.date说法出现错误,

java.lang.IllegalStateException: dateText must not be null
at *****.******.*****.ui.detailview.bloodpressure.SummaryListAdapter$ItemViewHolder.update(SummaryListAdapter.kt:68)
Run Code Online (Sandbox Code Playgroud)

但是listItem.date不是null我已经检查了Log.

Iro*_*ack 8

错误不是listItem.date,错误说dateText您尝试设置文本的textview为null,

仔细检查你使用的是正确的 textview

可能性:
1)你可能会使用错误idtextview
2)你而增加观看可能使用了错误的文件.

ctrl+单击itemDateSummaryList并查看是否textview来自相同的布局文件infate或其他


Sur*_*nav 5

如果使用片段: 1.使用一个全局变量,该变量将保存您的布局引用

private var root: View? = null   // create a global variable which will hold your layout 
 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
            root = inflater.inflate(R.layout.your_layout_file_name, container, false)  // initialize it here
            return root
    }
Run Code Online (Sandbox Code Playgroud)

2.要使用布局内的任何布局视图,可以将其与(root.)一起使用,例如:

root!!.textView.text="Hello"
Run Code Online (Sandbox Code Playgroud)