Контекст неразрешенной ссылки - PullRequest
0 голосов
/ 08 мая 2019

Я настраиваю свой адаптер RecyclerView, , и мне нужно использовать Activity Context, чтобы заполнить мою переменную viewmodel , а позже я буду использовать его для выполнения намерения перемещения. Почему я получил неразрешенную ссылку , даже если я поместил свой контекст в класс?

Я пытался привести к FragmentActivity, поскольку метод of() запрашивает FragmentActivity, но все тот же.

class TodoAdapter constructor(x:ArrayList<Notes>, c: Context) : RecyclerView.Adapter<TodoAdapter.Handler>() {
    private var lists:ArrayList<Notes> = x
    private var context:Context = c
    private lateinit var viewmodel:TodoViewModel

    class Handler(private val itemBinding:NotesListBinding): RecyclerView.ViewHolder(itemBinding.root) {
        fun bind(note:Notes){
            itemBinding.dataclass = note
            itemBinding.viewmodel = ViewModelProviders.of(context).get(TodoViewModel::class.java)
            itemBinding.notesCardView.setCardBackgroundColor(note.color)
        }
    }

Я ожидаю, что на контекст будут хорошо ссылаться, поскольку он находится в одном классе. Но он возвращает ошибку вроде:

e: /media/cua/Projectah/Android Studio/TODOLisT/app/src/main/java/com/cua/todolist/adapter/recyclerviewadapter/TodoAdapter.kt: (24, 59): Unresolved reference: context

1 Ответ

1 голос
/ 08 мая 2019

Переменная context не разрешена, поскольку Handler не имеет ссылки на TodoAdapter. Чтобы достичь этого, вы должны объявить его как inner class Handler. Хотя не стоит этого делать!

Вместо этого предоставьте viewmodel с bind:

fun bind(note: Notes, viewmodel: TodoViewModel) {
    itemBinding.dataclass = note
    itemBinding.viewmodel = viewmodel
    itemBinding.notesCardView.setCardBackgroundColor(note.color)
}

Также рассмотрите возможность установки цвета фона карты в привязке данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...