У меня есть фрагмент с RecyclerAdapter внутри него. Я хочу инициализировать адаптер в методе onCreateView
но он выдает ошибку "Type mismatch. Required : Context , Found : FragmentActivity"
в этом утверждении
Я понятия не имею, почему первая показала эту ошибку, а вторая не содержит ошибку времени компиляции.
Отображена ошибка
recyclerView!!.adapter = RestaurantMenuAdapter(activity)
Ошибка отображается
recyclerView!!.layoutManager = LinearLayoutManager(activity)
Fragment.kt
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment val view = inflater.inflate(R.layout.fragment_restaurant_menu, container, false) recyclerView = view.findViewById(R.id.restaurant_container) recyclerView!!.adapter = RestaurantMenuAdapter(activity) recyclerView!!.layoutManager = LinearLayoutManager(activity)
RecyclerAdapter.kt
class RestaurantMenuAdapter (val context : Context) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater return object : RecyclerView.ViewHolder(inflater.inflate(R.layout.item_menu1, parent, false)) { } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { } override fun getItemCount(): Int { return 10 } }
Измените это:
recyclerView!!.adapter = RestaurantMenuAdapter(activity)
To-:
recyclerView!!.adapter = RestaurantMenuAdapter(activity.applicationContext)
Изменение адаптера Recycler от контекста к активности.
class RestaurantMenuAdapter (val context : Activity) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater return object : RecyclerView.ViewHolder(inflater.inflate(R.layout.item_menu1, parent, false)) { } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { } override fun getItemCount(): Int { return 10 } }