我有一个数组适配器(aAdapter)和一个数组列表(aList),我试图用一个清除按钮来清除数据库中的条目并清除列表.
我的问题是NotifyDataSetChanged()只是在我的onlick方法中不起作用:
public voID clearDB(VIEw vIEw) { aList.clear(); aAdapter.notifyDataSetChanged(); HighscoresDB hsdb = new HighscoresDB(HighscoresActivity.this); hsdb.openDB(); hsdb.clearDB(); hsdb.closeDB();}
它适用于其他任何地方.我甚至尝试将clear和notifyDataSetChanged()放在另一个方法中并调用它但是这也不起作用但是当我从onCreate调用它时它确实有效….
有任何想法吗?
附:数据库正在被清除.
解决方法 首先,我发现AndroID适配器实现存在很大缺陷.当谈到执行任何定制时,似乎有关于如何使用它的模糊描述,官方文档没有澄清其中任何一个.我很高兴被证明是错的.在视图中编辑数据时,我获得一致结果的方式如下:
>所呈现的基础数据结构的所有更改都应该在AsyncTask中完成,这在您更改UI线程上的内容并且不希望出现并发问题时是有意义的.
>应该通过调用适配器方法来执行底层数据结构的 *** 作,因此如果您有listadapter,则使用添加,删除和清除列表适配器.这意味着适配器管理视图通知等.这通常导致必须创建自定义适配器,因为可用的方法是有限的(在7之前甚至没有添加所有sdk版本).你也最终将你的适配器作为一个大的fat controller,虽然我知道我们不应该将androID视为MVC模式,但它似乎仍然是错误的.
>我已经创建了应用程序,我绕过适配器调用以 *** 作底层数据结构,并且它已经完成所有结果,最终无法预测,除非您严格管理通知到视图.现在我只需通过适配器调用.
所以虽然我无法解释为什么notifiyDataSetChanged在你的onClick方法中不起作用.我希望提供有用的信息,可以帮助您使应用程序按预期工作.
总结以上是内存溢出为你收集整理的android – 数组适配器notifyDataSetChanged()将无法正常工作全部内容,希望文章能够帮你解决android – 数组适配器notifyDataSetChanged()将无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)