我想知道:我正在尝试制作一个作为 ListView 的应用程序,显示数据库中的数据。
这是具体的事情:我希望在修改数据库的事件中, ListView 自动更新,就好像数据库上有一个“监听器”一样......自动上传 ListView 。
根据我读到的内容,我应该使用 loadManager、光标、 fragment (以允许我在 3.0 的早期版本中使用 loadManager)...但由于我是初学者,这对我来说有点难以理解.
我想知道是否有人可以尝试向我深入解释如何一起使用这些工具(我不是要求代码,只是解释:))
谢谢!
编辑:好吧,因为我是新人,而且我很迷茫,我需要更多解释。
不同的步骤是: 1) Activity 在 onCreate() 上创建一个 listView、一个自定义 CursorAdapter 和一个游标。然后仍然在 onCreate 上,它向游标提供 SQLiteDatabase 对象上的标准请求。然后我们将光标影响到适配器,并将适配器影响到listView。
2)当插入事件到来时,我使用SQLiteDatabase的插入函数,然后获取游标上请求的结果,并将其交给列表的CursorAdapter(它会自动更新 ListView 吗?)
3)对于我的customAdapter 来说……我读的源代码、示例和教程越多,我就越迷失。只是明白我必须重写bindView()和newView(),我并没有真正理解它们的目的,加上我想为我的适配器创建许多数据类型的方式......
我觉得自己不太聪明,但我确实尝试过,但我还是迷失了:(
最佳答案
如果您在 ListView 上使用 CursorAdapter,那么一切都为您完成了! http://developer.android.com/reference/android/widget/CursorAdapter.html
编辑:抱歉,我应该解释更多。我读得很快,我想你已经有了 ListView 并且想要保持更新。
当您从数据库获取数据时,无论是通过 ContentResolver.query、SQLiteDatabase.query 还是其他方式,您都会得到一个 Cursor。您需要在 CursorAdapter 中使用它。
您需要子类化 CursorAdapter 并重写 bindView 才能使用 ListView 内光标的数据(因为它不知道您拥有哪些列以及哪些字段映射到哪个 View )。假设您在创建 CursorAdapter 时使用 FLAG_REGISTER_CONTENT_OBSERVER 标志,则每次更新游标中的数据时,列表都应该更新。
关于java - Android 使用不同的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697493/