当我尝试从一个方法修改它时,我定义了一个名为notes的变量,android studio说
val无法重新分配
但是,如果我像这样访问变量,我可以修改它:this.notes.
class NoteAdapter(var context : Context) : RecyclerView.Adapter<NoteViewHolder>(){
private var notes = emptyList<Note>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NoteViewHolder {
var itemView = LayoutInflater.from(context).inflate(R.layout.note_item, parent, false)
return NoteViewHolder(itemView)
}
override fun getItemCount(): Int {
return notes.size
}
fun setNotes(notes: List<Note>) {
this.notes = notes
notifyDataSetChanged()
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我来自Javascript背景,所以请原谅我的无知.
你命名了两件事notes:
private var notes = emptyList<Note>()
Run Code Online (Sandbox Code Playgroud)
和:
fun setNotes(notes: List<Note>)
Run Code Online (Sandbox Code Playgroud)
所以,在setNotes()函数中,notes指的是函数参数.这被视为一个val,不能重新分配.this.notes指notes您NoteAdapter班上定义的属性.
一般来说,尝试使用不同的名称,以减少混淆.例如,您可以使用:
fun setNotes(replacementNotes: List<Note>)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |