如何将字符串从共享首选项转换为 MutableList<LatLng> 对以在 kotlin 中绘制折线?

Posted

技术标签:

【中文标题】如何将字符串从共享首选项转换为 MutableList<LatLng> 对以在 kotlin 中绘制折线?【英文标题】:How do I convert string from shared preferences to MutableList<LatLng> pairs to draw polylines in kotlin? 【发布时间】:2021-10-13 21:01:13 【问题描述】:

我想将共享首选项中的值转换为 LatLng 对的可变列表以绘制折线。我不知道如何转换它。请帮助。在这里,我将共享首选项polyl 中的值设为 [lat/lng:(10.184133,76.4005395),lat/lng(10.1840907,7​​6.4004505)] 等。如何将其转换为 LatLng 对的可变列表,以便绘制折线。


            val sharedPr= activity?.getPreferences(Context.MODE_PRIVATE)
            val polyl= sharedPr?.getString("polylinep",null)

            Toast.makeText(requireContext() ,"$polyl", Toast.LENGTH_SHORT).show()
            try 
            val polyline10= polyl as MutableList<LatLng>

            Toast.makeText(requireContext() ,"ub$polyline10", Toast.LENGTH_SHORT).show()


            map.addPolyline(
                    PolylineOptions().apply 
                        width(10f)
                        color(Color.BLUE)
                        jointType(JointType.ROUND)
                        startCap(ButtCap())
                        endCap(ButtCap())
                        addAll(polyline10)
                    

                )


             catch (e:java.lang.ClassCastException)

            

【问题讨论】:

【参考方案1】:

序言

我不知道您如何创建字符串“[lat/lng:(10.184133,76.4005395),lat/lng(10.1840907,7​​6.4004505)]”,但我认为将坐标转换为JSON 字符串,然后将其保存到首选项。如果您无法更改这些坐标在第一时间保存的方式,那么我的回答对您没有帮助。

解决方案

保存到共享首选项

考虑到您在某种列表中拥有坐标并希望将它们保存到首选项中,例如,您可以使用 GSON 之类的库将该列表转换为表示该列表的 JOSN 字符串。 要了解这是如何完成的,请查看本教程:https://www.tutorialspoint.com/how-to-save-arraylist-to-sharedpreferences-on-android

从共享首选项中读取

现在坐标列表已保存为 JSON 字符串,您可以从共享首选项中读取它,将其转换回 JSON 对象并从中读取您的列表。例如,此线程的第一个答案中显示了这一点:Is it ok to save a JSON array in SharedPreferences?

希望能帮到你:)

【讨论】:

以上是关于如何将字符串从共享首选项转换为 MutableList<LatLng> 对以在 kotlin 中绘制折线?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 HashMap 保存到共享首选项?

使用Gson从共享首选项中检索列表

如何在不使用共享首选项的情况下将数据存储为颤动的对象[关闭]

如何从共享首选项中检索数组列表并将数组列表设置为 recyclerview

如何在单击按钮时将按钮颜色保存到共享首选项?

添加值后增加共享首选项键