2013-03-16 51 views
0

我正在设计一个android应用程序,并希望使用Content Provider来填充我的列表视图。问题是我需要来自两个不同来源(数据库中的表格)的数据:一组静态数据,另一组用于与静态数据相关的用户进度数据。Android内容提供商;帮助设计可敬的URI结构

因此,例如,我得到了测验列表,以及这些测验中每个测验的用户成绩列表。

如果SimpleCursorArray了两个光标,然后我可以使用:

/quizzes 
/users/#/quiz_grades 

为两个URI的并通过光标适配器。

但SimpleCursorArray只能使用一个游标,所以我需要加入我拥有的两个表。没问题,但我怎么设计一个干净的的URI?

也许是这样的:

/users/#/quizzes 

但是,这感觉不对,因为这些问题不属于用户...

或许:

/quizzes/users/# 

但同样,用户不属于问题...

有时我需要自己检索测验没有用户等级,所以我还需要:

我知道这是一个很迂腐的问题,但我的强迫症自然不会让我有任何的满足进度,直到我想出解决办法...

+0

由于您只有两张表,发布DDL可能会帮助我们更好地了解它们之间的关系。也就是说,如果您的内容提供商的唯一原因是在您的应用程序中传递数据*,那么它是过度的。为什么不直接访问表? – 323go 2013-03-16 22:40:41

+0

我有两个以上的表,但在这个例子中,我只使用两个表(实际上是视图)。 QuizSummary视图具有列_id,名称,num_questions,而QuizProgress视图具有列user_id,quiz_id,num_questions_correct。所以在我的列表视图中,我使用测验名称填充了一个TextView,并用num_questions填充了一个num_questions_correct进度条。 – kennyg 2013-03-17 18:15:50

+0

我目前将它作为直接表访问来实现,但是这会阻止用户界面并降低应用的速度。我想让SimpleCursorAdapter的用户,并导致我走向ContentProvider的道路。我同意这可能是矫枉过正,所以我第二次猜测这个想法。如果它有什么不同,我最终打算将这些数据从服务器上反复发送。 – kennyg 2013-03-17 18:19:10

回答

0

/users/#/quizzes-with-grades怎么样?