我有一个列表视图,在添加到数据库后,我正在尝试从数据库更新。
当数据进入列表并进入listview时,listview不会更新列表中的项数。
如果我的清单是{1,3,6,8,12}
将4添加到列表并排序之后,我的列表视图将显示{1、3、4、6、8}
不显示第6项12。
当我向列表中添加更多内容时,这个问题就更加复杂了,如果我要添加另一个项目,这个列表视图仍然只显示前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会正确更新。但这不是我想要的解决方案,因为这不会更新数据库中的列表视图。
几个小时来我一直在思考这个问题,如有任何帮助将不胜感激。
最佳答案
但这不是我想要的解决方案,因为这不会更新数据库中的列表视图。
你的ArrayAdapter
正在包装一些ArrayList
。不管ArrayList
是什么,它都不是ArrayList
返回的getAllGroups()
。我敢打赌,你刚刚创建了一个新的ArrayList
。如果是,您的ArrayAdapter
不知道您对数据库所做的任何更改,因为它是不同的ArrayList
。
或者:
更新现有的ArrayList
,或
使用add()
,addAll()
,clear(),
insert(),
remove(), and/or
sort()on your
arrayadapter(which also saves you the trouble of calling
notifydatasetchanged()`,或
为新的ArrayAdapter
创建一个新的ArrayList
,并将新的ArrayAdapter
附加到您的ListView
关于android - 将项目添加到我的ArrayList不能正确更新ListView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17604064/