使用 Jetpack Compose 从文件中读取和显示数据

问题描述 投票:0回答:0

我在 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 框架不是很了解,所以如果你认为我应该加深一些学习,请不要犹豫,让我知道。

android json kotlin android-jetpack-compose
© www.soinside.com 2019 - 2024. All rights reserved.