Android中SimpleCursorAdapter和CursorLoader的使用

5
我是Android的新手,正在试图理解SimpleCursorAdapterCursorLoader类。据我了解,我看到的所有示例都使用这两个类在后台线程中加载数据到ListView中(以避免阻塞UI)。
我对此感到满意,并已经使用了自己列表的通用方法,但现在我想能够单击列表中的项目并获取该项目的完整信息。通常使用SimpleCursorAdapterCursorLoader来检索单个项目的详细信息吗?还是它们只适用于列表?
谢谢。
2个回答

8

你的博客很棒。正是通过它我学会了加载器。但是,我找不到你提到的关于详细视图的信息。你能详细说明一下吗?目前,我只是用SimpleCursorAdapter拼凑一个单个项目视图,在构造函数中指定0(什么也没有)作为布局,并显式调用bindView,将LinearLayout作为详细视图。非常感谢您的帮助。 - Alex
为什么在详细视图中要使用适配器?适配器是用于数据列表而不是单个详细记录的。我指的是我的帖子中onLoadFinshed()部分的代码。在这里,我读取查询返回的唯一行并显式设置视图元素。 - Wolfram Rittmeyer
你在回答里提到了这个。使用适配器的好处是将数据绑定到部分视图,并使用光标加载器自动更新它。为什么它们只能用于列表呢?大多数其他视图系统都允许将绑定到列表和单个项。(例如,MVC MVVM)。你是不是想说应该在详细视图中使用光标加载器? - Alex
1
是的,我只提到了Loaders。不错:我应该更具体一些。Android默认情况下不提供此绑定 - 除了一些特定情况(如ListViews)之外。但是有一些库可以做到这一点。由于我不使用它们,因此无法对它们发表任何评论。 - Wolfram Rittmeyer
1
@WolframRittmeyer 请问您能否看一下这个问题 http://goo.gl/mdBsGF? - eddy

3
将Adapters视为数据(Cursor)和您连接到的任何内容(例如ListView)之间的抽象层。这样,您就有了一个公共接口,用于在您显示数据的视图(ListView、TableView等)和数据(Cursor、ArrayList或其他任何东西)之间进行交互。这很有帮助,因为如果您以后发现想要通过ArrayList而不是Cursor访问数据,那么您只需使用不同的适配器替换即可。

考虑到您的问题,Adapters提供了对信息的抽象访问,因此您可以“询问”它存储了哪些信息以及在哪里存储。您可以将OnItemClickListener附加到ListView上,然后从那里访问您的数据。


为什么要在这里更换一个适配器呢?拥有一个适配器应该已经足够了。 - IgorGanapolsky
@IgorGanapolsky 我不确定我理解你的问题。如果你交换了适配器,你仍然只有一个适配器。 - soren.qvist
更换适配器为另一个。我想要澄清这个声明。你是指在编译时还是运行时更改代码? - IgorGanapolsky
1
@IgorGanapolsky 我认为你的意思是在编写源代码时,这是正确的。当我将适配器附加到我的ListView时,我可以选择该适配器,例如SimpleCursorAdapter(假设我的数据存在于数据库中)。如果突然决定将我的数据存储在纯文本文件中,那么我可以编写一个适配器来解释来自该文本文件的数据,并将其替换为SimpleCursorAdapter。聪明的地方在于,我的ListView不关心我使用了哪个适配器!对于ListView来说,每个适配器的表现方式都相同,因为它们符合适配器接口。 - soren.qvist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接