I have a code that connects to my API and gets values for my spinner in my android application. I want it to populate it with some default values if there is no internet connectivity. Here is my code.
The spinner gets the names of products and uses that, but what if there is no internet, then it should fill it with some default values.
private void retrieveJSON() {
// showSimpleProgressDialog(this, "Loading...","Fetching Json",false);
StringRequest stringRequest = new StringRequest(Request.Method.GET, URLstring,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("strrrrr", ">>" + response);
try {
JSONObject obj = new JSONObject(response);
if(obj.optString("error").equals("false")){
goodModelArrayList = new ArrayList<>();
JSONArray dataArray = obj.getJSONArray("requests");
for (int i = 0; i < dataArray.length(); i++) {
ModelData playerModel = new ModelData();
JSONObject dataobj = dataArray.getJSONObject(i);
playerModel.setName(dataobj.getString("name"));
goodModelArrayList.add(playerModel);
}
for (int i = 0; i < goodModelArrayList.size(); i++){
names.add(goodModelArrayList.get(i).getName().toString());
}
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(GoodsInActivity.this, simple_spinner_item, names);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//displaying the error in toast if occurrs
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
// request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
Define and initialize a names_default(list or array) with default value. then check goodModelArrayList size like that ::
if(goodModelArrayList.size > 0){
for (int i = 0; i < goodModelArrayList.size(); i++){
names.add(goodModelArrayList.get(i).getName().toString());}
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(GoodsInActivity.this, simple_spinner_item, names);spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);
}else{
//set adapter with names_default(list or array)
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(GoodsInActivity.this, simple_spinner_item, names_default);spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);
}
Same else condition code you can use when you get no internet connection in your app and also in onErrorResponse method.