Как я могу использовать залп Response.Listener в приложении для Android с Koltllin - PullRequest
1 голос
/ 17 мая 2019

Я разрабатываю приложение для Android с Kotlin, api 28. Я также использую Swagger, чтобы получить все веб-сервисы. После получения файла "Kotlin_client_generated" с swagger, и добавьте его в мой проект. Я хочу использовать один из мобильных приложений в качестве следующего:

fun apiMobileAPIGetProviderPost(disc: kotlin.Any, pageIndex: kotlin.Int, pageSize: kotlin.Int, sort: kotlin.String, order: kotlin.String) : kotlin.Array<ProviderData> {
        val localVariableBody: kotlin.Any? = disc
        val localVariableQuery: MultiValueMap = mapOf("pageIndex" to listOf("$pageIndex"), "pageSize" to listOf("$pageSize"), "sort" to listOf("$sort"), "order" to listOf("$order"))

        val contentHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf()
        val acceptsHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf("Accept" to "application/json")
        val localVariableHeaders: kotlin.collections.MutableMap<kotlin.String,kotlin.String> = mutableMapOf()
        localVariableHeaders.putAll(contentHeaders)
        localVariableHeaders.putAll(acceptsHeaders)

        val localVariableConfig = RequestConfig(
            RequestMethod.POST,
            "/api/MobileAPI/GetProvider",
            query = localVariableQuery,
            headers = localVariableHeaders
        )
        val response = request<kotlin.Array<ProviderData>>(
            localVariableConfig,
            localVariableBody
        )

        return when (response.responseType) {
            ResponseType.Success -> (response as Success<*>).data as kotlin.Array<ProviderData>
            ResponseType.Informational -> TODO()
            ResponseType.Redirection -> TODO()
            ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error")
            ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error")
            else -> throw kotlin.IllegalStateException("Undefined ResponseType.")
        }
    }   

Я добавляю в свою деятельность следующий код:

val params = HashMap<String, String>()
        MobileAPIApi().apiMobileAPIGetProviderPost(params,0,50,null,null,
            object : Response.Listener<List<ProviderData>>() {
                fun onResponse(response: List<ProviderData>?) {
                    if (response != null && response.size != 0) {......}

Моя проблема в том, почему я не могу использовать Response.Listener, как в Java, и как я могу его заменить.

1 Ответ

1 голос
/ 17 мая 2019

Вот пример использования залпа в Kotlin:

val stringRequest = object : StringRequest(Request.Method.POST, "url",
        com.android.volley.Response.Listener { response ->
            if (response != null) {

            }
        }, com.android.volley.Response.ErrorListener { error -> error.printStackTrace() }) {
        @Throws(AuthFailureError::class)
        override fun getParams(): Map<String, String> {
            val params = HashMap<String, String>()
            params["key"] = "value"
            return params
        }
    }

Вы можете заменить свои параметры и использовать реакцию залпа после замены значений.

...