简体   繁体   English

类型不匹配,必需:(Recyclerview.Adapter<recyclerview.viewholder> ?..Recyclerview.Adapter&lt;*&gt;,找到:HomeAdapter</recyclerview.viewholder>

[英]Type Mismatch , Required: (Recyclerview.Adapter<Recyclerview.ViewHolder>?..Recyclerview.Adapter<*> , found: HomeAdapter

I made this application in Android Studio using Kotlin language.我使用 Kotlin 语言在 Android Studio 中制作了这个应用程序。 When I made the application an error occurred.当我创建应用程序时发生错误。

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()}")
            }
        })
    }
}

Here is the error screenshot:这是错误截图: 在此处输入图像描述

Type Mismatch Error occurs when you try to assign a value between two different variable types.当您尝试在两种不同的变量类型之间分配值时,会发生类型不匹配错误

 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

Your HomeAdapter will be您的HomeAdapter将是

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

FYI供参考

  • I assume results?: emptyList() holds ArrayList<String> .我假设results?: emptyList()持有ArrayList<String>
  • Set proper name.设置正确的名称。 RecyclerView's Object name itemAdapter is not acceptable. RecyclerView 的Object 名称itemAdapter是不可接受的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM