他们没有带 ArrayAdapter 的 DSL
Anko DSL with ArrayAdapter
今天我一直致力于将我的一个应用程序转换为纯 Kotlin 构建作为测试。我目前正在与阵列适配器作斗争,并收到此错误。
File from xml type layout resource ID #0x7f0c000a
这是我的 activity 有错误。
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
目录中创建文件,将其命名为 test_text_layout.xml
并添加以下内容
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
在 activity 的代码中
val cardAdapter = ArrayAdapter(ctx, R.layout.test_text_layout, arr)
问题原因 - 您传递了错误的参数。来自 documentation
resource int: The resource ID for a layout file containing a TextView to use when instantiating views.
如果你想完全摆脱xml,那么你需要扩展ArrayAdapter
今天我一直致力于将我的一个应用程序转换为纯 Kotlin 构建作为测试。我目前正在与阵列适配器作斗争,并收到此错误。
File from xml type layout resource ID #0x7f0c000a
这是我的 activity 有错误。
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
目录中创建文件,将其命名为 test_text_layout.xml
并添加以下内容
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
在 activity 的代码中
val cardAdapter = ArrayAdapter(ctx, R.layout.test_text_layout, arr)
问题原因 - 您传递了错误的参数。来自 documentation
resource int: The resource ID for a layout file containing a TextView to use when instantiating views.
如果你想完全摆脱xml,那么你需要扩展ArrayAdapter