Несоответствие типов: предполагаемый тип - это GroupsFragment, но Context! ожидалось - PullRequest
0 голосов
/ 12 апреля 2020

Я учусь анализировать JSON и использую данные, чтобы поместить его в список переработчика, и делаю это фрагментом. Это вызывает много головных болей и разного рода ошибок. Первый - это Контекст! это содержимое файла GroupFragment.kt:

package com.locos.riders

import android.graphics.Color
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_groups.*
import com.locos.riders.UserListAdapter

class GroupsFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_groups, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        userlist.layoutManager = LinearLayoutManager(this)
        userlist.adapter = UserListAdapter


    }


}

Когда я запускаю это, я получаю несоответствие типов: выведенный тип - это GroupsFragment, но Context! был ожидаем.

В моем UserListAdapter.kt я пытаюсь загрузить userlist_row, и я также не могу найти этот ресурс макета, даже если файл создан и находится в layout / folder:

package com.locos.riders

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.userlist_row.view.*

class UserListAdapter: RecyclerView.Adapter<CustomViewHolder>() {

    // number of items
    override fun getItemCount(): Int {
        return 3
    }

    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): CustomViewHolder {
        val layoutInflater = LayoutInflater.from(parent?.context)
        val cellForRow = layoutInflater.inflate(R.layout.userlist_row, parent, false)
        return CustomViewHolder(cellForRow)
    }

    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
        holder.view.listTitle?.text = "123"
    }

}

class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {

}

1 Ответ

0 голосов
/ 12 апреля 2020

У вас есть некоторые опечатки, которые обычно можно исправить, прочитав ошибки.

Вот решение этих ошибок:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    userlist.layoutManager = LinearLayoutManager(context) // <- context == getContext() in java
    userlist.adapter = UserListAdapter() // <- put parentheses over here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...