如何解决如何使用 Kotlin 实现 volleyresponse 监听器
我正在尝试将我的 volley 请求移动到一个类中,以便我可以将它用于多个网络调用。我需要一种方法来访问我在此类中使用的任何活动中的响应侦听器。我在java中看到了一些例子,但我发现很难做到这一点。
import android.content.Context
import com.android.volley.DefaultRetryPolicy
import com.android.volley.Request
import com.android.volley.RequestQueue
import com.android.volley.Response
import com.android.volley.toolBox.StringRequest
import com.android.volley.toolBox.Volley
interface VolleyResponse{
}
class NetworkCall(LINK:String,CONTEXT:Context,CACHE:Boolean,ParaMS: HashMap<String,String> = HashMap(),SuccessListener: Response.Listener<String>,ErrorListener: Response.ErrorListener ) {
private var link:String = LINK
private var context: Context = CONTEXT
var cache: Boolean = CACHE
var ParaMS: HashMap<String,String> = HashMap()
fun RunTask( ){
//BUILD the request and listen for error or success
var request = object : StringRequest(
Request.Method.POST,link,Response.Listener { response -> { }
},Response.ErrorListener { error -> { }
}) {
override fun getParams(): HashMap<String,String> {
return ParaMS
}
}
var RequestQueue: RequestQueue = Volley.newRequestQueue(context)
request.setShouldCache(cache)
request.setRetryPolicy(DefaultRetryPolicy(10000,0F))
}
}
我这样称呼它...
fun processLogin() {
var params:HashMap<String,String> = HashMap()
params.put("user_email","username")
params.put("user_password","password")
var networkCall = NetworkCall("",applicationContext,false,params)
}
我只需要能够访问我的 processLogin 函数中的响应侦听器。
解决方法
首先,您必须在定义 Response.Listener<String>
的 Response.ErrorListener
中定义 class
和 processLogin
的实现,这可以按以下方式完成
private val successListener = Response.Listener<String> {
// Do something when response is received
}
private val errorListener = Response.ErrorListener {
// Do something when error is received
}
现在在调用 processLogin
时将这些作为参数传递,如下所示
var networkCall = NetworkCall("",applicationContext,false,params,successListener,errorListener)
最后,您需要更新您的 NetworkCall
类,以便在网络操作时调用这些侦听器
fun RunTask( ){
//BUILD the request and listen for error or success
var request = object : StringRequest(
Request.Method.POST,link,SuccessListener,// Pass listeners to request
ErrorListener) {
override fun getParams(): HashMap<String,String> {
return PARAMS
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。