【发布时间】:2013-07-10 08:32:14
【问题描述】:
我有一个 ListView,我在添加到数据库后尝试从数据库中更新它。
当数据进入 List 并进入 ListView 时,ListView 不会更新 List 中的项目数。
如果我的列表是 {1, 3, 6, 8, 12} 将 4 添加到列表并排序后,我的列表视图显示 {1, 3, 4, 6 ,8} 没有显示第 6 项 12。
当我向列表中添加更多项目时,这个问题会更加复杂,如果我要添加另一个项目,这个 ListView 仍然只会显示前 5 个。
这里是有问题的代码区
TourGroup group = data.getParcelableExtra(TOURGROUP);
DatabaseHandler db = new DatabaseHandler(this);
db.addGroup(group);
mainList = db.getAllGroups();
db.close();
Collections.sort(mainList, new CustomComparator());
ListView groupList = (ListView) findViewById(R.id.groupList);
ArrayAdapter adapter = (ArrayAdapter) groupList.getAdapter();
adapter.notifyDataSetChanged();
如果我替换
mainList = db.getAllGroups();
有
mainList.add(group);
然后 ListView 会正确更新。但这不是我想要的解决方案,因为这不会从数据库中更新列表视图。
我已经为这个问题苦苦思考了好几个小时了,任何帮助都将不胜感激。
【问题讨论】:
-
db.getAllGroups()返回的数据类型是什么
-
如果问题出在 mainList = db.getAllGroups(),那么您必须向我们展示 getAllGroups() 的实现。据我们所知,它可能会做很多坏事。
标签: android database sqlite listview arraylist