Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用测验应用程序部署问题_Android_Kotlin - Fatal编程技术网

Android 使用测验应用程序部署问题

Android 使用测验应用程序部署问题,android,kotlin,Android,Kotlin,我正在构建一个有数千个问题的测验应用程序。问题在文本文件中,如下所示: 42. Example question? a) option 1 b) option 2+ c) option 3 d) option 4 e) option 5 43. Example question? a) option 1 b) option 2 c) option 3 d) option 4+ e) option 5 +字符表示正确答案。我的申请有一个问题类: data class Question(

我正在构建一个有数千个问题的测验应用程序。问题在文本文件中,如下所示:

42. Example question?
a) option 1
b) option 2+
c) option 3
d) option 4
e) option 5

43. Example question?
a) option 1
b) option 2
c) option 3
d) option 4+
e) option 5
+
字符表示正确答案。我的申请有一个
问题
类:

data class Question(
    val text: String?,
    val answers: ArrayList<String>?,
    val correctAnswer: String?
)
数据类问题(
val文本:字符串?,
val回答:ArrayList?,
答案:字符串?
)
我的目标是在应用程序中附带所有这些问题,并且这些问题不可由用户编辑。实现这一目标的最佳方式是什么

我可以想到两件事:

  • 我可以用应用程序验证文本文件,并在运行时用一些正则表达式解析问题。看起来可能,但混乱,可能缓慢。它也不能很好地扩展

  • 用这些
    Question
    对象填充数据库,并随应用程序一起发送数据库。同样,这听起来是可行的,但我不确定这是否真的可行

  • 还有别的吗?也许是连载之类的?我不确定。
    Question
    类实现了
    Parcelable
    接口。我是Android开发新手;很可能我遗漏了什么

以某种方式用这些问题对象填充数据库,并随应用程序一起发送数据库。同样,这听起来是可行的,但我不确定这是否真的可行

就SQLite而言:

  • 大多数主要编程语言都有SQLite客户端库。您可以编写一个桌面工具,使用您喜爱的语言将问题转换为表格行

  • 您可以将SQLite数据库与应用程序打包,并将其复制到文件系统以供使用。如果您希望将Room用于SQLite access API,则Room具有对此的内置支持(
    RoomDatabase.Builder
    上的
    createFromAsset()


或者,您可以让一个桌面工具将您的问题转换为JSON或XML,然后将它们打包为资产,并在运行时读取它们。

如果我使用Room for SQLite access,我如何在桌面计算机上创建数据库是否重要?@_Static_assert:Room有一些需要放入数据库中的元数据。
createFromAsset()
的文档在这一点上有点模糊。我所做的是让Room为我创建一个空数据库,但使用我的表结构和Room的元数据。我将该数据库从设备上复制下来,并将数据注入其中,然后将填充的数据库用作未来的资产。但是,如果您经常更改模式,这将是一件令人恼火的事情。