Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果get-volley请求为真(200 ok),则需要从cardview中的drawable更新图像_Java_Android_Android Volley_Cardview - Fatal编程技术网

Java 如果get-volley请求为真(200 ok),则需要从cardview中的drawable更新图像

Java 如果get-volley请求为真(200 ok),则需要从cardview中的drawable更新图像,java,android,android-volley,cardview,Java,Android,Android Volley,Cardview,我有一个应用程序,通过截击检查网站是否正常工作 如果发出请求,我可以记录请求是否成功 我在cardview中显示它时遇到了麻烦 我有一个onBindViewHolder,它填充cardview中的所有元素 onBindViewHolder中有一个“ischeck”函数,用于检查是否发出请求 但由于我使用截击,因此无法从onResponse返回值 public void onResponse(JSONObject response) { Log.

我有一个应用程序,通过截击检查网站是否正常工作
如果发出请求,我可以记录请求是否成功
我在cardview中显示它时遇到了麻烦 我有一个onBindViewHolder,它填充cardview中的所有元素
onBindViewHolder中有一个“ischeck”函数,用于检查是否发出请求
但由于我使用截击,因此无法从onResponse返回值

 public void onResponse(JSONObject response) {
                         Log.d("istrue","yes");
                        Toast.makeText(context1, "Success: ", Toast.LENGTH_LONG).show();
                    }

那么如何从onResponse函数中填充cardview呢?

由于截取请求是异步进行的(在后台线程中),因此不能简单地返回结果。你需要的是一个倾听者

  • 接口
    声明为侦听器
  • 在您的
    活动中实现它
    /
    片段
  • 接口
    引用传递给正在截击的类 请求
  • onResponse
    ,使用响应调用侦听器回调方法 价值观
  • 现在您获得了对
    活动的响应,您可以在其中更新
    回收视图

  • 对于示例代码,

    您需要一个接口来从web服务获取回调:

    public interface ServerCallback {
        void onSuccess(String s);
        void onError(Exception e);
    }
    
    然后,在Web服务类中使用接口:

    import android.content.Context;
    import com.android.volley.Request;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.StringRequest;
    import com.android.volley.toolbox.Volley;
    
    public class WebService {
    
        private static WebService ourInstance;
    
        public static WebService getInstance() {
            if (ourInstance == null) {
                ourInstance = new WebService();
            }
            return ourInstance;
        }
    
        public void sample(Context context, ServerCallback serverCallback) {
            Volley.newRequestQueue(context).add(new StringRequest(Request.Method.GET, "Your URL", new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    serverCallback.onSuccess(response);
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    serverCallback.onError(error);
                }
            }));
        }
    
    }
    
        WebService.getInstance().sample(this, new ServerCallback() {
            @Override
            public void onSuccess(String s) {
                // do every thing you want
            }
    
            @Override
            public void onError(Exception e) {
                // handle error response
            }
        });
    }