【问题标题】:Android Kotlin/Anko - notifyDataSetChanged() doesn't refreshAndroid Kotlin/Anko - notifyDataSetChanged() 不刷新
【发布时间】:2018-08-24 10:08:18
【问题描述】:

notifyDataSetChanged() ,我在 UI 活动中使用...

如果我打开和关闭它,它会“刷新”视图...从 RealmDB 读取它

我做错了什么?

提前致谢

弗朗西斯科

class MainActivityUI : AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>)= with (ui) {

    val list: ArrayList<RouletteRealmObject> = ArrayList(RouRealmManager().findAll())
    val mAdapter = RouAdapter(list)

    verticalLayout {

        linearLayout {
            lparams(width = matchParent, height = wrapContent)

            button("ADD") {
                                   onClick {

                                       alert {
                                           var newRouName: EditText? = null
                                           var newRouCasino: EditText? = null

                                           customView {
                                               verticalLayout {
                                                   textView("NEW ROULETTE")
                                                   newRouName = editText { hint = "Name" }
                                                   newRouCasino = editText { hint = "Casino" }
                                               }
                                           }
                                           positiveButton("OK") {

                                               RouRealmManager().insert("${newRouName!!.text}", "${newRouCasino!!.text}")
                                               toast("new roulette ${newRouName!!.text} form casino ${newRouCasino!!.text}")
                                               mAdapter.notifyDataSetChanged()

                                           }
                                       }.show()
                                   }
            }.lparams(width = matchParent, height = wrapContent)
        }

        recyclerView {
            lparams(width = matchParent, height = wrapContent)
            layoutManager = LinearLayoutManager(ctx)
            adapter = mAdapter
        }
    }
}

}

【问题讨论】:

  • 因为您将 RealmResults 中的所有内容复制到 ArrayList 中,而 Realm 不会更新。
  • 首先感谢 EpicPandaForce 的回答,我明白了你的意思,但我不明白:使用“mAdapter.notifyDataSetChanged()”不应该自动调用“mAdapter = RouAdapter(list)”,因此“ArrayList(RouRealmManager().findAll())”?这不是让领域更新列表吗?

标签: android kotlin realm notifydatasetchanged anko


【解决方案1】:

试试这个

class MainActivityUI : AnkoComponent<MainActivity> {

   override fun createView(ui: AnkoContext<MainActivity>)= with (ui) {
     val list = RouRealmManager().findAll()           
     val mAdapter = RouAdapter(list)
     list.addChangeListener(RealmChangeListener {
         mAdapter.notifyDataSetChanged()
     }) 

【讨论】:

  • 给了我一些错误,但我明白你的意思......我会尝试在适配器上设置一个监听器......我也在考虑实时数据,但我害怕耗尽资源,因为我提前知道数据库什么时候会改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
相关资源
最近更新 更多