繁体   English   中英

排球请求仅在android Java中执行一次

[英]Volley request only executing once in android Java

我正在这样打排球。 我想执行一次发布命令,一次或多次,这取决于我的arraylist的大小。 但是执行此代码只会执行一次volley命令。

这是我尝试过的。

for(int i = 0; i<listofobjects.size(); i++){
    makeRequest(listobjects.get(i));
}


public void makeRequest(Customobject obj){

 RequestQueue requestQueue = Volley.newRequestQueue(this);
    String modifiedUrl = MainActivity.URL + "XXXXX";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, modifiedUrl, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.v("Response", response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.v("Error", error.toString());
        }
})};

requestQueue.add(stringRequest);

}

此代码仅执行一次截击请求。 我如何使其执行取决于我在对象列表中拥有的项目数。

尝试这个:

    public void makeRequest(Customobject obj){
    boolean status = true;
    int i=0;
    do
    {
     RequestQueue requestQueue = Volley.newRequestQueue(this);
        String modifiedUrl = MainActivity.URL + "XXXXX";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, modifiedUrl, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                status = true;
                Log.v("Response", response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                status = true;
                Log.v("Error", error.toString());
            }
    })};
    if(status)
{
    requestQueue.add(stringRequest);
    i++;
        status =false;        

}
    }while(i<listofobjects.size());

    }
// Gloabal variable
int i = 0;

调用此功能

makeRequest(listobjects.get(i));

makeRequest方法将被递归调用

public void makeRequest(Customobject obj){

 RequestQueue requestQueue = Volley.newRequestQueue(this);
    String modifiedUrl = MainActivity.URL + "XXXXX";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, modifiedUrl, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.v("Response", response);
            i++;
            if(i < listobjects.size()){
                // make a recursive function 
                makeRequest(listobjects.get(i));
            } else {
                // Completed
           }



        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.v("Error", error.toString());
        }
})};

requestQueue.add(stringRequest);

}

我认为这种方法可以解决您的问题。

int i = 0;
makeRequest(listObjects.get(i));
public void makeRequest(Customobject obj){
 RequestQueue requestQueue = Volley.newRequestQueue(this);
    String modifiedUrl = MainActivity.URL + "XXXXX";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, modifiedUrl, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.v("Response", response);
                 if(reposnse==success && i<listobjects.size){
                  i++;
                  makeRequest(listObjects.get(i));
             }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.v("Error", error.toString());
        }
})};

requestQueue.add(stringRequest);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM