由于 Kotlin 中的更新,如何在 oncreate 之外为 ListView 定义 ArrayAdapter?
how to define an ArrayAdapter for ListView outside oncreate due to update in Kotlin?
我尝试在 Kotlin 中更改 listItems 后让 ListView runnng 更新。
只要我留在 activity_main 内,我在这里找到的简单示例就可以正常工作。但是尝试更改函数中的项目我没有得到定义的适配器。
我的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// access the items of the list
val adapter = ArrayAdapter(this,
R.layout.mylistviewitem, array)
//val listView: ListView = findViewById(R.id.listview_1)
myslist.setAdapter(adapter)
有效并为我提供了正确的列表。
但是当我尝试更改函数中的数组时,我无法访问 "adapter",因此无法访问 "adapter.notifyDataSetChanged()"
我尝试使用一个简单的函数
fun myfkt() {
array[1]=" changed?"
adapter.notifyDataSetChanged()
}
所以,问题是:
我如何在 onCreate (main)function
之外定义适配器
诸如
之类的东西
var myadapter = ArrayAdapter(this, R.Layout.mylistviewitem,array)
不工作。编译是 o.k,但应用程序立即崩溃
(我真的花了几个小时,但没有找到 Kotlin 的解决方案。从 java 中获取代码并自动转换为 Kotlin 的示例也没有用
将适配器的声明移到 onCreate
函数之外。然后您应该可以从 myfkt()
访问它
lateinit val adapter: ArrayAdapter
然后将您的 onCreate
声明更改为
adapter = ArrayAdapter(this, R.layout.mylistviewitem, array)
与您的问题无关,您应该考虑 RecyclerView。它比 ListView 好得多,因为它通过使用 ViewHolder 模式将良好的行为形式化。
我尝试在 Kotlin 中更改 listItems 后让 ListView runnng 更新。 只要我留在 activity_main 内,我在这里找到的简单示例就可以正常工作。但是尝试更改函数中的项目我没有得到定义的适配器。
我的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// access the items of the list
val adapter = ArrayAdapter(this,
R.layout.mylistviewitem, array)
//val listView: ListView = findViewById(R.id.listview_1)
myslist.setAdapter(adapter)
有效并为我提供了正确的列表。
但是当我尝试更改函数中的数组时,我无法访问 "adapter",因此无法访问 "adapter.notifyDataSetChanged()" 我尝试使用一个简单的函数
fun myfkt() {
array[1]=" changed?"
adapter.notifyDataSetChanged()
}
所以,问题是: 我如何在 onCreate (main)function
之外定义适配器诸如
之类的东西var myadapter = ArrayAdapter(this, R.Layout.mylistviewitem,array)
不工作。编译是 o.k,但应用程序立即崩溃 (我真的花了几个小时,但没有找到 Kotlin 的解决方案。从 java 中获取代码并自动转换为 Kotlin 的示例也没有用
将适配器的声明移到 onCreate
函数之外。然后您应该可以从 myfkt()
lateinit val adapter: ArrayAdapter
然后将您的 onCreate
声明更改为
adapter = ArrayAdapter(this, R.layout.mylistviewitem, array)
与您的问题无关,您应该考虑 RecyclerView。它比 ListView 好得多,因为它通过使用 ViewHolder 模式将良好的行为形式化。