我是新来的android开发人员,想设计一个语言学习应用程序,从数据库中检索随机问题集并将其显示给用户。从SQLLite中检索随机数据
我有不同类型的问题,如多项选择题,填空,匹配正确的选项,将单词排列成适当的句子,听音频和回答理解问题。
我不知道如何将这些不同类型的问题存储在数据库中,并随机检索并显示给用户进行回答。
我正在使用SQLLite。
有人可以帮我或为我提供代码来实现吗?
我是新来的android开发人员,想设计一个语言学习应用程序,从数据库中检索随机问题集并将其显示给用户。从SQLLite中检索随机数据
我有不同类型的问题,如多项选择题,填空,匹配正确的选项,将单词排列成适当的句子,听音频和回答理解问题。
我不知道如何将这些不同类型的问题存储在数据库中,并随机检索并显示给用户进行回答。
我正在使用SQLLite。
有人可以帮我或为我提供代码来实现吗?
这是一个相当广泛的问题,有很多事情需要考虑。例如,您的问题建模和持久性 - 将它们存储在数据库中。几年前,我制作了类似的Android应用程序。
我建议的第一件事是逐步增加步骤;如果你仅仅从多项选择题开始(所有答案都有四个答案),事情就容易多了。然后,一旦你有这个工作,添加其他类型的问题。
对于建模您的对象域,我建议从一个基地Question
类开始。这可以包含一些常用属性,如唯一ID,名称/短名称,也许是某种难度度量。
在此之后,您可以有问题的子类型,如MultipleChoiceQuestion
,ShortAnswerQuestion
和EssayQuestion
。他们可能有其他属性(如多选择可能的答案列表)。
将所有这些映射到一堆表中并不是微不足道的。通常的方法是每个班级一张桌子;另一个选项是一个表,其中包含所有类的所有属性,以及某种“类型”鉴别器。我建议前者,因为它是属性的更清晰的分离。
最后,就随机而言,有两种方法:数据库级别的随机数据(效率更高,因为它返回的数据更少)或随机应用程序级别。不同之处在于“嘿数据库,给我N个随机问题”与“嘿数据库,给我所有问题;嗨申请,随机抽出N个问题。”
要利用数据库,您可以使用此回答here,他们使用ORDER BY RANDOM() LIMIT N
。我不知道SQLite,但是在SQL Server中,对于大型数据集,这可能非常慢;如果您有很多问题,请对其进行分析,看看它是否对您的应用程序太慢。
如果你有一个基本问题table with all questions, this will work quite easily for you. If not, you may need to do something similar where you poll for
A multiple choice questions,
B short answer questions, etc. where
A + B + ... = N`你想要的问题的数量。
我用这种类型的问题的方法是唯一标识每个行。序列号很好。
每次你经过循环时,将所有的ID放入一个数组结构中。数组中的每个条目在您的SQLite表中都有一个随机数和一个ID。
执行此操作后,对数组进行排序,现在您已对问题进行了随机排序。按顺序处理。
你的问题太抽象了,仍然试图回答你的问题。
首先,您将需要创建一个数据库,其中将包含一个唯一标识您的问题的表。
然后,你可以解雇查询为:
SELECT * FROM table ORDER BY RANDOM() LIMIT 1;
可用于从SQLite表中选择一个随机行。
然后,只需显示该问题的代码即可。
@faz,因为您将此标记为已接受,您是否可以澄清您发现的有用内容,以及需要改进或更详细的内容? – ashes999