说我有一个List<User>
. 现在我可以将这个列表包装在一个 ArrayAdapter 中。
List<User> users = Users.getAll();
ArrayAdapter<User> = new ArrayAdapter<User>(this, android.R.layout.simple_list_item_1, users);
然后我将适配器绑定到列表视图以显示用户列表。
Users.getAll()
使用 Sugar ORM 查询数据库并返回用户列表。可以从显示用户列表的活动中将项目添加到用户列表中。我想知道如何更新列表视图。
选项1
一种方法是手动更新users
as a 我添加到数据库中,然后调用adapter.notifyDataSetChanged()
. 这可行,但感觉不对,因为我正在维护一个代表数据库中内容的“假”列表。
选项 2
我想知道如果我只是清除其中的项目users
,用新的数据库查询的结果更新它然后调用它有多糟糕adapter.notifyDataSetChanged()
?
是否会丢弃所有子视图并重新渲染?还是它调用该equals()
方法来查看绑定到每个孩子的模型是否相同,然后只更新新的?
其他信息
由于我使用的是 SugarORM,我认为我无法访问 Cursor 来做更有效的事情。但是,如果有更好的方法使列表与 SugarORM 保持同步,我也很高兴听到。