Не работает ArrayAdapter во фрагменте
Недавно я начал изучать Kotlin для Android (использую Android Studio).
Взял шаблон проекта, в котором несколько фрагментов, и решил написать код, который выводит список чатов. Но ArrayAdapter (как вы можете видеть) не работает - пишет, что функция не найдена, хотя я импортировал библиотеку. Как это можно исправить?
package com.example.teenup.ui.home
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ListView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.example.teenup.databinding.FragmentHomeBinding
class HomeFragment : Fragment() {
private var _binding: FragmentHomeBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
_binding = FragmentHomeBinding.inflate(inflater, container, false)
val root: View = binding.root
var chatList = ArrayList<String>()
chatList.add("Лера")
chatList.add("Денис")
chatList.add("Папа")
chatList.add("Мама")
chatList.add("Даня")
val chats: ListView = binding.chats
chats.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, chatList)
return root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
Ответы (1 шт):
Автор решения: Vind Iskald
→ Ссылка
В конструктор адаптера первым параметром нужно передать контекст, а не сам фрагмент.
chats.adapter = ArrayAdapter(requireСontext(), android.R.layout.simple_list_item_1, chatList)
Андроид Студио при наведении курсора на ошибку часто дает подсказки, например в этом случае в подсказке она показывает 3 варианта конструктора которыми можно инициализировать адаптер и красным подсвечивает параметры конструктора тип которых не совпадает с требуемым.