因此,我需要绘制数千个坐标,我所知道的最佳方法之一是将坐标另存为.txt文件,然后使用

val json_string = application.assets.open(file_name).bufferedReader().use{it.readText()}

但当拉取文件时,它会将文件作为字符串读取,尽管文件是以如下所示的数组格式保存的:

"97.951476367000055,3.155017079000061","97.951800004000063,3.154406602000051","97.949325673000033,3.156145963000029","97.948721732000081,3.15657051200003","97.948646156000052,3.156623638000042","97.947494978000066,3.15786896100002","97.94724135000007,3.158143331000076","97.947000011000057,3.158404405000056","97.946790649000036,3.158630887000072","97.946272953000062,3.15919092200005","97.945702608000033,3.15980791000004","97.945553326000038,3.159969400000023","97.944601930000033,3.160998592000055","97.944409762000078,3.161206474000039"....

我想以数组格式读取assets资源 ,例如,它用逗号分隔,用引号分组,例如:

  • "97.951476367000055,3.155017079000061"
  • "97.951800004000063,3.154406602000051"
  • "97.949325673000033,3.156145963000029"
  • 以此类推.

如何以字符串数组或ArrayList<字符串>格式读取此.txt文件资源?

谢谢!

推荐答案

创建一个如下所示的模型

data class Coordinate(val latitude: String, val longitude: String)

//从资源文件中读取坐标并转换为ArrayList的函数

fun readCoordinatesFromAsset(context: Context, assetFileName: String): 
   ArrayList<String> {
   val gson = Gson()
   val arrayList = ArrayList<String>()

   try {
        context.assets.open(assetFileName).use { inputStream ->
        val reader = InputStreamReader(inputStream)
        val coordinates = gson.fromJson(reader, ArrayList::class.java)

        // Convert the ArrayList of Coordinate objects to an ArrayList of strings
        for (coordinate in coordinates) {
            arrayList.add(coordinate.toString())
        }
    }
  } catch (e: Exception) {
    e.printStackTrace()
  }

return arrayList
}

您的文本文件应类似于以下格式

Coordinate.txt

[
        "97.951476367000055,3.155017079000061",
        "97.951800004000063,3.154406602000051",
        "97.949325673000033,3.156145963000029",
        "97.948721732000081,3.15657051200003",
        "97.948646156000052,3.156623638000042",
        "97.947494978000066,3.15786896100002",
        "97.94724135000007,3.158143331000076",
        "97.947000011000057,3.158404405000056",
        "97.946790649000036,3.158630887000072",
        "97.946272953000062,3.15919092200005",
        "97.945702608000033,3.15980791000004",
        "97.945553326000038,3.159969400000023",
        "97.944601930000033,3.160998592000055",
        "97.944409762000078,3.161206474000039"
    ]

您可以将该方法调用为

val resulArray: ArrayList<String> =readCoordinatesFromAsset(this,"Coordinate.txt")

Android相关问答推荐

listOf(listOf(字符串))在lazyArchitect(lazyStream)中合成

Android可组合继承?

原因平滑滚动的滞后懒惰列在android jetpack compose

Android Gradle/Groovy,如何将文件复制到APK

如何更新Kotlin中的显示?

MAP函数返回单位列表而不是字符列表

Android从已连接的设备获得GATT

如何在android库中关联应用程序链接?

如何使用其他组件的位置来定位自定义弹出窗口

Android v31 及更低版本中 ImageView 中的圆角

从包含的(复合)模块导入 Kotlin 类时,Android 应用程序模块的 build.gradle.kts 未解决的引用错误

从 Jetpack Compose 中的图像中删除默认高度

如何以编程方式通过 whatsapp android 共享图像和文本

在 Jetpack Compose 中包装内容

如何在jetpack compose中通过lamda返回columnScope/RowScope

如何在 Compose 中使用合并的单元格创建网格视图?

无法为:app@debug/compileClasspath解析依赖项com.github.dhaval2404:imagepicker-support:1.7.1

如何使用jetpack compose实现布局,其中图标在列布局上是绝对位置

如果我在网络请求中指定它们是否与判断网络功能相关

如何根据加载图像的 colored颜色 绘制边框?