带有ArrayAdapter的Anko DSL

今天,我一直在努力将我的一个应用程序转换为纯粹的kotlin构建。 我正在努力与阵列适配器目前,并得到这个错误。

File from xml type layout resource ID #0x7f0c000a 

这是我的活动有错误。

 class KotlinTest : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val arr = Array(5, Int::toString) verticalLayout { id = R.id.test_text_layout textView { width = matchParent height = matchParent id = R.id.test_text_item } listView { id = R.id.test_text_view } } val cardAdapter: ArrayAdapter<String>? = ArrayAdapter(ctx, R.id.test_text_layout, arr) val tempView: ListView = findViewById(R.id.test_text_view) as ListView tempView.adapter = cardAdapter cardAdapter?.notifyDataSetChanged() } } 

这是ids.xml文件。

 <?xml version="1.0" encoding="utf-8"?> <resources> <item name="test_text_item" type="id"/> <item name="test_text_view" type="id"/> <item name="test_text_layout" type="id"/> </resources> 

我已经尝试了一些东西,但没有运气,所以任何指导将不胜感激。 我想我只是想念一些愚蠢的东西。

删除这一行<item name="test_text_layout" type="id"/>

res/layout dir中创建文件,将其test_text_layout.xml并添加以下内容

 <?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

在活动的代码

 val cardAdapter = ArrayAdapter(ctx, R.layout.test_text_layout, arr) 

问题的原因 – 你传递了错误的参数。 从文档

resource int:包含要在实例化视图时使用的TextView的布局文件的资源ID。

如果你想彻底摆脱xml,那么你需要扩展ArrayAdapter