Q:

How to refresh Listview (Volley) correctlly? 

I Use Volley to load the data from the server, but the problem if I try to refresh (Reload) the data, I get double in my Listview.  If I click 5 times on the Button quickly, I get 5 times of data.  
How can I stop the first Loading before I begin with new Refresh ? 
that is why I get this error sometime :
FATAL EXCEPTION: main
                  Process: com.project1.proj, PID: 19495
                  java.lang. IndexOutOfBoundsException: Index: 25, Size: 0
    public void Load_data(View view) {  
Load_data();
} 

public void Load_data() {

        URL="http://myweb.com/data.php;

        listItems_001.clear();  // empty the old data
        requestQueue = Volley.newRequestQueue(this);
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request. Method. GET, URL,
                new Response. Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        // textView.setText("");
                        try {
                            JSONArray jsonArray = response.getJSONArray("all_data");

                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject respons = jsonArray.getJSONObject(i);
                                // String id = respons.getString("id") + "*";
                                String id = respons.getString("id");
                                name = respons.getString("name");

listItems_001.add(new listItems(id, name)); 

                                int request_id = Integer.valueOf(id);
                                 if(request_id > id_last_request){
                                     id_request_now=request_id;

                                }
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                        listAllIteme_001(); // step 10
                        if (listView.getAdapter().getCount() == 0) {

                            textView.setVisibility(View. VISIBLE);
                            listView.setEmptyView(textView);

                            Toast.makeText(Ordered_Taxi_Driver.this,"No Message found ", Toast. LENGTH_LONG).show();
                            ly_progressbar_load.setVisibility(View. GONE);

                        }else{
                            Toast.makeText(Ordered_Taxi_Driver.this,"Total Items =  "+listView.getAdapter().getCount(), Toast. LENGTH_LONG).show();

                            textView.setVisibility(View. GONE);

                        }

                    }
                }, new Response. ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("VOLLEY", "ERROR");
            }
        }

        );
        requestQueue.add(jsonObjectRequest);

    }

A:

try this.  it will be  first Loading before begin with new Refresh is stop. 
public void Load_data(View view) {  
        Load_data();
        } 

    boolean mIsRequest = false;

        public void Load_data() {
        if(mIsRequest)
            return;
        mIsRequest= true;
                URL="http://myweb.com/data.php;

                listItems_001.clear();  // empty the old data
                requestQueue = Volley.newRequestQueue(this);
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request. Method. GET, URL,
                        new Response. Listener<JSONObject>() {
                            @Override
                            public void onResponse(JSONObject response) {
                                mIsRequest = false;
                                // textView.setText("");
                                try {
                                    JSONArray jsonArray = response.getJSONArray("all_data");

                                    for (int i = 0; i < jsonArray.length(); i++) {
                                        JSONObject respons = jsonArray.getJSONObject(i);
                                        // String id = respons.getString("id") + "*";
                                        String id = respons.getString("id");
                                        name = respons.getString("name");

        listItems_001.add(new listItems(id, name)); 

                                        int request_id = Integer.valueOf(id);
                                         if(request_id > id_last_request){
                                             id_request_now=request_id;

                                        }
                                    }

                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                                listAllIteme_001(); // step 10
                                if (listView.getAdapter().getCount() == 0) {

                                    textView.setVisibility(View. VISIBLE);
                                    listView.setEmptyView(textView);

                                    Toast.makeText(Ordered_Taxi_Driver.this,"No Message found ", Toast. LENGTH_LONG).show();
                                    ly_progressbar_load.setVisibility(View. GONE);

                                }else{
                                    Toast.makeText(Ordered_Taxi_Driver.this,"Total Items =  "+listView.getAdapter().getCount(), Toast. LENGTH_LONG).show();

                                    textView.setVisibility(View. GONE);

                                }

                            }
                        }, new Response. ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                         mIsRequest = false;
                        Log.e("VOLLEY", "ERROR");
                    }
                }

                );
                requestQueue.add(jsonObjectRequest);

            }

