【问题标题】:Anko DSL with ArrayAdapterAnko DSL 与 ArrayAdapter
【发布时间】:2016-12-10 18:34:01
【问题描述】:

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

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

【问题讨论】:

  • 错误出现在哪一行?
  • @voddan 我直到tempView.adapter = cardAdapter 才得到错误,那时我假设它实际上试图构建arrayAdapter 并膨胀布局,但我可能是错的。如果我用该行运行它并且它下面的行被注释掉,我只会得到一个空白活动。

标签: android kotlin anko


【解决方案1】:

删除这一行&lt;item name="test_text_layout" type="id"/&gt;

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)

问题的原因 - 你传递了错误的参数。来自documentation

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

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

【讨论】:

  • 然后无法将其链接到 Anko 生成的自定义布局。这就是我开始假设的,我研究得越多。看起来对于我要使用的应用程序,我将不得不扩展 ArrayAdapter。感谢您确认这一点。
  • @thechucklingatom 欢迎您,如果您需要帮助,请在聊天中联系我chat.stackoverflow.com/rooms/26424/iosandroidchaosoverflow
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
相关资源
最近更新 更多