我正在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类中使用。所以我不得不使用其他方法。
我尝试File.io了MusicsScreen文件中的www.example.com库,但它无法正常工作,并导致错误。有人知道如何使其工作吗?
PS:我是一个移动的开发的初学者,我不太了解JetPackCompose框架,所以如果你认为我应该在学习中加深一些东西,不要犹豫,让我知道。
1条答案
按热度按时间qpgpyjmq1#
好吧,让我分享一个好方法来读取和显示数据从一个文件希望它能帮助你,检查下面的代码
首先创建
MusicUtils
文件并将以下代码粘贴到该文件中现在
musicList
函数包含了音乐数据的列表,你可以在任何地方调用这个函数。希望它能起作用👍🏻