当我试图按id查找RecycleView
时,出现以下错误。
错误:-类型推断失败:没有足够的信息来推断参数T
代码:
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
}
}
贬低
在Kotlin
中,我们可以在不使用findViewById
语法的情况下获取视图的id。
例如,我们使用下面的布局,从中我们将获得视图的id并执行操作
布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/welcomeMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Hello World!"/>
</FrameLayout>
我们可以使用以下代码找到视图的id
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
welcomeMessage.text = "Hello Kotlin!" ////WE ARE GETTING THE IDS WITHOUT USING THE FINDVIEWBYID syntax
}
怎样
为了能够使用它,您需要一个特殊的导入(我在下面写的那个),但是IDE能够自动导入它。再简单不过了!
import kotlinx.android.synthetic.main.YOUR_LAYOUT_NAME.*/// HERE "YOUR_LAYOUT_NAME" IS YOUR LAYOUT NAME WHICH U HAVE INFLATED IN onCreate()/onCreateView()
我们需要导入这个属性来获取视图的id,而不需要使用findviewbyd
语法。
有关此主题的更多信息,请参阅此链接:-单击此处
更新
现在kotlin android扩展已被弃用,我们现在可以使用视图绑定,而不是使用kotlin提供的绑定,它的工作原理与上述解决方案相同,只需在应用程序gradle中使用以下选项
android {
...
buildFeatures {
viewBinding true
}
}
您处于API级别26,其中findViewById
的返回类型现在是通用的T
,而不是View
,因此可以推断。你可以在这里看到相关的变更日志。
所以你应该能够做到:
val recycler_view = findViewById<RecyclerView>(R.id.recycler_view)
或者这个:
val recycler_view: RecyclerView = findViewById(R.id.recycler_view)
尝试类似的东西:
val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
你也可以使用Kotlin Android Extensions。查一下这里的医生
有了它,你可以在你的代码中直接调用recycler\u view
。
静态编程语言Android扩展:
gradle中。构建
addapply插件:“kotlin android extensions”
它是如何工作的?第一次调用recycler_view
时,对findViewById
的调用完成并缓存。
我正在尝试编写一个android静态编程语言应用程序,但我得到了以下错误。我哪里出错了? 这是我如何声明我的HashMap: 错误: 类型推断失败。没有足够的信息来推断构造函数HashMap中的参数K。请明确说明
我使用KOTLIN/SPRING BOOT(2.5.4)/MAVEN/MARIA DB我遇到了这样的错误,所以我想我必须找到make bean。但是我找不到我错过的东西。你能帮我吗...? 我的项目是Kotlin com。实例测试0831└ 控制器└ 用户控制器└ 实体└ 使用者└ 存储库└ 用户存储库└ 服务└ 用户服务└ UserServiceImpl 程序包com。实例test0831.co
正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创
本文向大家介绍动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍,包括了动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍的使用技巧和注意事项,需要的朋友参考一下 关于如题这几个概念,大部分人应该比较熟悉,但是我昏了好久,所以写下来加深印象。 1. 动态语言 又叫动态编程语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如
我有一个具有多个依赖项的Java项目,我想使用Kotlin DSL与Gradle一起打包到一个胖罐子中。 当我运行,构建成功,但当我尝试运行它时,它找不到主类: 以下是完整的文件: 以及我的回购协议的链接:https://github.com/darkasphalt/myapp
我正在为我的应用程序创建登录页面,它给了我。 它只在错误和响应中给出错误。知道为什么会这样吗? 问题出现了,因为我没有正确检查所有的括号,因此if语句没有正确工作,并因此给出错误。 抱歉给您带来不便。我祝你下周过得愉快。我检查了第一个答案,认为是正确的。