2

今天我一直致力于将我的一个应用程序转换为纯 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>

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

4

1 回答 1

4

删除此行<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"/>

在活动代码中

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

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

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

如果你想完全摆脱 xml,那么你需要扩展ArrayAdapter

于 2016-12-12T10:12:07.440 回答