Несоответствие типов, Обязательно: (Recyclerview.Adapter ? .. Recyclerview.Adapter <*>, найдено: HomeAdapter - PullRequest
0 голосов
/ 08 апреля 2020

Я сделал это приложение в Android Studio, используя Kotlin язык. Когда я подал заявку, произошла ошибка.

class HomeActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)

        val progressBar = findViewById<ProgressBar>(R.id.pb_home)


        val dataSource = NetworkProvider.providesHttpAdapter().create(HomeDataSource::class.java)
        dataSource.discoverMovie().enqueue(object : Callback<HomeResponse> {
            override fun onResponse(
                call: Call<HomeResponse>, response:
                Response<HomeResponse>
            ) {
                progressBar.visibility = View.GONE

                val results = response.body()?.results
                val itemAdapter = findViewById<RecyclerView>(R.id.rv_home)
                itemAdapter.addItemDecoration(
                    DividerItemDecoration(this@HomeActivity,
                        DividerItemDecoration.VERTICAL))
               itemAdapter.adapter = HomeAdapter (results ?: emptyList())
            }

            override fun onFailure(call: Call<HomeResponse>, t: Throwable) {
                Log.e(HomeActivity::class.java.simpleName, "${t.printStackTrace()}")
            }
        })
    }
}

Вот скриншот ошибки: enter image description here

1 Ответ

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

Ошибка несоответствия типов возникает при попытке присвоить значение двум различным типам переменных.

 val recyclerView                = findViewById(R.id.rv_home) as RecyclerView?
 val adapterOBJ                  = HomeAdapter(results ?: emptyList())
 recyclerView?.layoutManager     = LinearLayoutManager(this@HomeActivity, RecyclerView.VERTICAL, false)
 recyclerView?.adapter           = adapterOBJ

Ваш HomeAdapter будет

class HomeAdapter (private val alList: ArrayList<String>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

К вашему сведению

  • Полагаю, results ?: emptyList() содержит ArrayList<String>.
  • Установите правильное имя. RecyclerView's Имя объекта itemAdapter недопустимо.
...