我有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
答案 0 :(得分:1)
notifyDataSetChanged方法的问题在于它检测信息源何时发生变化,而不是重新签名时。我在这个方法上遇到了很多问题,所以我建议不要在这种情况下使用notifyDateSetChanged,但你可以使用新的信息源创建一个新的适配器。尝试这种改变。
body {
background-image: url(/example/example.jpg);
background-repeat: no-repeat;
background-size: cover;
}
试试这个,我希望它适合你。