У меня есть собственный класс GetVolley
class GetVolley(private val mContext: Context, private val url: String, private val onVolleySuccess: OnVolleySuccess?, private val mOnVolleyError: OnVolleyError?, private val mOnVolleyEnd: OnVolleyEnd?) {
private fun getDataVolley() {
Log.d("GetVolleyUrl", url)
val request = JsonObjectRequest(Request.Method.GET, url, null, Response.Listener { response: JSONObject ->
Log.d("GetVolleyResult", response.toString())
if (response.has("result") && response.getBoolean("result")) {
onVolleySuccess?.onSuccess(response)
} else if (response.has("message")) {
if (mOnVolleyError != null) mOnVolleyError.onError(response.getString("message"))
else Toast.makeText(mContext, response.getString("message"), Toast.LENGTH_LONG).show()
}
mOnVolleyEnd?.onEnd()
}, Response.ErrorListener { volleyError: VolleyError ->
Log.d("GetVolleyError", volleyError.message.toString())
val errorMessage: String = if (volleyError is NetworkError || volleyError is AuthFailureError) {
"No Internet…"
} else {
"Undefinded error"
}
if (mOnVolleyError != null) mOnVolleyError.onError(errorMessage)
else Toast.makeText(mContext, errorMessage, Toast.LENGTH_LONG).show()
mOnVolleyEnd?.onEnd()
})
Volley.newRequestQueue(mContext).add(request)
}
init {
getDataVolley()
}
}
Интерфейсы в разных файлах:
interface OnVolleySuccess {
fun onSuccess(response: JSONObject)
}
______________________________________
interface OnVolleyError {
fun onError(error: String)
}
______________________________________
interface OnVolleyEnd {
fun onEnd()
}
Когда я использую свой собственный запрос GetVolley. Мой код выглядит так:
GetVolley(this, url, object : OnVolleySuccess {
override fun onSuccess(response: JSONObject) {
parseResponse(response)
}
}, object : OnVolleyError {
override fun onError(error: String) {
showError(error)
}
}, null)
Я хочу, чтобы он выглядел так:
GetVolley(this, url, response -> {
parseResponse(response)
}, error -> {
showError(error)
}, null)
Все мои обратные вызовы допускают значение NULL, поэтому я могу установить значение NULL onVolleySuccess, onVolleyError, onVolleyEnd.