我在 android studio 中使用 jetpack compose 和 kotlin 来构建应用程序。 这个应用程序将能够显示某些歌曲,如标题和作者。我想到了使用 JSON 文件写入所有数据的想法,以便应用程序可以读取数据并将其显示在应用程序的“音乐屏幕”上。 这就是我的项目的样子:
为了实现这个目标,我做了一些测试。 首先,在 MainActivity 文件中使用
applicationContext.assets.open("musics.json")
:
data class MyData(
val title: String,
val author: String,
)
class MainActivity : ComponentActivity() {
// Routing object
// lateinit var navController: NavHostController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
//navController = rememberNavController()
val jsonString = applicationContext.assets
.open("musics.json")
.bufferedReader()
.use { it.readText() }
val dataArray = JSONArray(jsonString)
val dataList = mutableListOf<MyData>()
for (i in 0 until dataArray.length()) {
val item = dataArray.getJSONObject(i)
val title = item.getString("title")
val author = item.getString("author")
dataList.add(MyData(title, author))
}
LazyColumn {
items(dataList.size) {
Row {
Text(dataList[it].title)
Text(dataList[it].author)
}
}
}
// entry point of my navigation graph
// SetupNavGraph(navController = navController)
}
}
}
该方法非常有效,但我想在 MusicsScreen 上显示数据。 不幸的是,我之前使用的 applicationContext 对象只能在 MainActivity 类中使用。所以我不得不使用其他方法。
我尝试了 MusicsScreen 文件中的 File.io 库,但它无法正常工作并导致错误。 有谁知道如何使这项工作?
PS : 我是移动开发的初学者,对 JetPack Compose 框架不是很了解,所以如果你认为我应该加深一些学习,请不要犹豫,让我知道。