2014-01-15 72 views
7

我身边有100的存储在其中需要根据基于像,每周一次,下周,下个月需求列表视图来显示它们的数据库时间表,在时间表因等..最好使用光标适配器或阵列适配器

是好上加载启动应用程序的所有日程,并显示他们根据在阵列适配器选项用户选择(每周,逾期,每月等)。或者在运行时使用查询,从数据库获取结果并使用cusor使用cusoradapter?在listview上加载数据。

哪种方法effeciant?我觉得总是询问DB是expesive操作?这是真的吗?

+0

http://stackoverflow.com/questions/8556929/cursoradapter-vs-arrayadapter-for-a-listview请看看这个 – 2014-01-15 06:05:45

+0

'请点击左边的复选标记来解决您的问题你most' – 2014-01-23 09:02:34

+0

中超,做@ user3110424,感谢和抱歉延迟:) – Naruto

回答

11

在你的情况下,当存在数据库时,CursorAdapter更合适,因为它不会将所有记录加载为ArrayAdapter。它仅加载可见记录或正在查询的记录。以下是CursorAdapter的文档:

将数据从光标公开到ListView小部件的适配器。

光标必须包含一个名为“_id”列或这个类将无法正常工作。此外,如果合并的游标在其“_id”列中具有重叠值,则对此类使用MergeCursor将不起作用。

由于Content provider的文档,所以它可能对你没用。

如果使用完全在您自己的应用程序中,则不需要提供者使用SQLite数据库。

您可以选择CursorAdapter而不是ArrayAdapter

+0

做,我们需要使用装载机使用光标适配器? – Naruto

+1

如果你愿意,你可以使用装载机光标适配器看到这个[如何CursorLoader与LoaderManager知道光标发送到一个CursorAdapter?](http://stackoverflow.com/questions/11150527/how-does-cursorloader-with- loadermanager-know-to-send-the-cursor-to-a-cursoradap) – 2014-01-15 07:29:59

+0

感谢您使用有用的链接(+1 for tat),这里有一件事情,内容提供者和加载者都依赖于彼此吗?装载机?你能澄清我的疑问吗?谢谢 – Naruto

0

更好地利用CursorLoader

CursorLoader一个运行在对一个ContentProvider的背景中的异步查询,并将结果返回到从它被称为活性或FragmentActivity。这允许Activity或FragmentActivity在查询进行时继续与用户交互。

装载机 Android中3.0引入,装载机可以很容易在一个活动或片段异步加载数据。

+0

支持旧版本V2.2,2.3版本的手机怎么样? – Naruto

+0

@LLL工作在较低版本,如2.2,2.3使用android-support-v4.jar。就像在API-11中引入的Fragment一样,但是在支持库的帮助下,它也在API上工作。 –

+0

好的,看起来很酷。现在我已经完成了我的一半工作,使用arrayadapters和一个基本的工艺,所以这些cusors使我的工作变得简单。它更好地使用cusors ?. – Naruto