android - 如何访问存储在 kotlin block 中的变量中的值

标签 android kotlin

我有一个正在使用 for 循环填充的列表。我在具有此 block 的方法中运行此代码。我需要有关如何返回 myReportLocations 及其值的帮助

private fun getReportCoordinates(): ArrayList<HashMap<String, String>>{
        var reportLocations : ArrayList<HashMap<String, String>> = ArrayList()
        var myReportLocations : ArrayList<HashMap<String, String>> = ArrayList()

        Fuel.get("http://kite.pythonanywhere.com/api/v1/progress").header(Headers.COOKIE, cookie).responseJson { request: Request, response: Response, result: Result<FuelJson, FuelError> ->
            //incident_count = (count_occurrences('{', response.body().toString()) - 1).toString()
            for (i in 0..result.get().array().length() -1){
                //myReportLat = result.get().array().getJSONObject(i)["latitude"].toString()
                //myReportLong= result.get().array().getJSONObject(i)["longitude"].toString()
                var reportCoord: HashMap<String, String> = HashMap()

                //println("The coordinates are: " + myReportLat+ " : " + myReportLong)
                reportCoord.put("LocationID", i.toString())
                reportCoord.put("Latitude", result.get().array().getJSONObject(i)["latitude"].toString())
                reportCoord.put("Longitude", result.get().array().getJSONObject(i)["longitude"].toString())
                reportCoord.put("LocationName", "Progress Report")
                reportLocations.add(reportCoord)
            }

            /*for (x in 0..reportLocations.size -1){
                println("This is the " + x + "th coordinate " + reportLocations.get(x))
            }*/

            myReportLocations.addAll(reportLocations)//everything is stored here
        }
        myReportLocations//there nothing stored
        return myReportLocations
    }

最佳答案

这是针对您的情况的解决方案:

private fun getReportCoordinates(result: (list:ArrayList<HashMap<String, String>> -> Unit) {
    var reportLocations : ArrayList<HashMap<String, String>> = ArrayList()
    var myReportLocations : ArrayList<HashMap<String, String>> = ArrayList()

    Fuel.get("http://kite.pythonanywhere.com/api/v1/progress").header(Headers.COOKIE, cookie).responseJson { request: Request, response: Response, result: Result<FuelJson, FuelError> ->
        //incident_count = (count_occurrences('{', response.body().toString()) - 1).toString()
        for (i in 0..result.get().array().length() -1){
            //myReportLat = result.get().array().getJSONObject(i)["latitude"].toString()
            //myReportLong= result.get().array().getJSONObject(i)["longitude"].toString()
            var reportCoord: HashMap<String, String> = HashMap()

            //println("The coordinates are: " + myReportLat+ " : " + myReportLong)
            reportCoord.put("LocationID", i.toString())
            reportCoord.put("Latitude", result.get().array().getJSONObject(i)["latitude"].toString())
            reportCoord.put("Longitude", result.get().array().getJSONObject(i)["longitude"].toString())
            reportCoord.put("LocationName", "Progress Report")
            reportLocations.add(reportCoord)
        }

        /*for (x in 0..reportLocations.size -1){
            println("This is the " + x + "th coordinate " + reportLocations.get(x))
        }*/

         result(myReportLocations)
    }
}

关于android - 如何访问存储在 kotlin block 中的变量中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263176/

相关文章:

javascript - 如何在 React-Native 中创建新的 var 并由用户获取值(value)?

android - DialogFragment 上带有 TimePickerDialog 的双主题框架?

kotlin - Kotlin 中的并发 Future 语法

kotlin - Kotlin中按位运算符的计算顺序

android - Kotlin中如何使用Handler和handleMessage?

java - 如何将参数传递给 BroadcastReceiver 的子类?

java - 动画结束后滚动,android

java - 绘制新 Canvas 是否会删除旧 Canvas 上的内容?

android - android中的MediaSessionCompat和MediaSession有什么区别?为什么有 androidx.media2 androidx.media 都存在?

kotlin - JobCancellationException StandaloneCoroutine 被取消