android - 在 Kotlin 中无法 "findViewById"。收到错误 "Type inference failed"

标签 android android-layout kotlin type-inference

当我尝试通过 id 查找 RecycleView 时出现以下错误。

Error:- Type inference failed: Not enough information to infer parameter T

Error

代码:

class FirstRecycleViewExample : AppCompatActivity() {
    val data = arrayListOf<String>()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.first_recycleview)

        val recycler_view =  findViewById(R.id.recycler_view) as RecyclerView ///IN THIS LINE I AM GETTING THE ERROR

        data.add("First Data")
        data.add("Second Data")
        data.add("Third Data")
        data.add("Forth Data")
        data.add("Fifth Data")

        //creating our adapter
        val adapter = CustomRecycleAdapter(data)

        //now adding the adapter to recyclerview
        recycler_view.adapter = adapter
    }
}

最佳答案

尝试类似:

val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)

您可以使用 Kotlin Android Extensions也为此。查看文档 here .
有了它,您可以调用recycler_view直接在您的代码中。

Kotlin Android 扩展:

  • 在您的应用中 gradle.build添加 apply plugin: 'kotlin-android-extensions'
  • 在您的类(class)中添加 import kotlinx.android.synthetic.main.<layout>.* 的导入在哪里 <layout>是布局的文件名。
  • 就是这样,您可以调用recycler_view直接在您的代码中。

它是如何工作的?第一次调用recycler_view ,调用findViewById完成并缓存

关于android - 在 Kotlin 中无法 "findViewById"。收到错误 "Type inference failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950401/

相关文章:

java - Firebase onDataChange 未触发

Android - 以编程方式捕获没有标题栏的屏幕截图

java - RuntimeException 找不到布局 XML 资源

android - 为什么我在代码中运行 TextView.measure() 时得到的结果与我在屏幕上看到的呈现不同

generics - 在 Kotlin 中的 when 子句中组合多个

android - Android应用程序可以在 list 中未定义网络权限的情况下进行网络调用

android - 是否可以制作一个在锁定屏幕上显示信息的 Android/iPhone 应用程序?

android - 需要使用闹钟管理器定期重启安卓设备

android - ListView 在较小的手机中出现裁剪

kotlin - Jedis内部向redis服务器发送QUIT请求