ListView的延迟更新

时间:2018-02-24 16:38:37

标签: android listview kotlin

我有listView使用Realm来填充项目。列表视图是baoyongzhang的SwipeMenuListView。我有一个问题,即listView没有立即更新。相反,当我存在应用程序并返回时,列表将反映新的更改。

我使用AlertDialog提示用户更新所选参数,这些参数将在listView中更新。

我使用RealmHelper类来填充listView ArrayAdapter

以下是帮助程序类(RealmHelper)中的代码:

c.execute("INSERT INTO {} VALUES (  \
    :date,  \
    :time,  \
    :amount,  \
    :balance,  \
    :balance_EUR  \
    )".format('table_name'),  \
    {
     'date': line_list[i*5+0],  \
    'time': line_list[i*5+1], \
    'amount': line_list[i*5+2], \
    'balance': line_list[i*5+3],  \
    'balance_EUR': line_list[i*5+4]  \
    }) 

这是主要的活动类代码

fun readAll(): ArrayList<User> {
   val finalList = ArrayList<User>()
   val listOfUsers = mRealm.where(User::class.java).findAll()

   finalList += listOfUsers

   return finalList
}

这是实际更新发生的主要代码:

class Users: AppCompatActivity() {

    private lateinit var realm: Realm

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.list_of_emirates)

        realm = Realm.getDefaultInstance()
        val helper = RealmHelper(realm)
        val users = helper.readAll()
        val mAdapter = MyAdapter(this, users)
        listView.adapter = mAdapter
   }
}

我使用Toast来测试是否调用了mAdapter.notifyDataSetChanged()并且我确认它已被调用,但似乎在重新启动应用程序之前listView没有更新。

知道为什么会出现这种行为?

注意:这是实际库的链接: https://github.com/baoyongzhang/SwipeMenuListView

1 个答案:

答案 0 :(得分:1)

notifyDataSetChanged方法的问题在于它检测信息源何时发生变化,而不是重新签名时。我在这个方法上遇到了很多问题,所以我建议不要在这种情况下使用notifyDateSetChanged,但你可以使用新的信息源创建一个新的适配器。尝试这种改变。

body {
background-image: url(/example/example.jpg);
background-repeat: no-repeat;
background-size: cover;

}

试试这个,我希望它适合你。