如果没有互联网并且无法从数据库中检索值,则使用默认值填充 android 中的微调器
Populate a spinner in android with default values if there is no internet and it is not able to retrieve values from the database
我有一个代码连接到我的 API 并在我的 android 应用程序中获取我的微调器的值。如果没有互联网连接,我希望它用一些默认值填充它。这是我的代码。
微调器获取产品名称并使用它,但如果没有互联网怎么办,那么它应该用一些默认值填充它。
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);
}
首先,您可以创建一个方法,例如“fillWithDefaults”
private void fillWithDefaults(){
ArrayList<String> names = new ArrayList<String>();
names.add("Default value 1");
names.add("Default value 2");
names.add("Default value 3");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(GoodsInActivity.this, simple_spinner_item, names);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);
}
最后,当发生任何不需要的异常时,调用此方法来填充 Spinner。例如在 catch 块或 onErrorResponse 事件中,甚至当您的 json 数组长度为零时。
用默认值定义和初始化一个names_default(列表或数组)。然后像那样检查 goodModelArrayList 大小 ::
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);
}
当您的应用程序和 onErrorResponse 方法中没有互联网连接时,您可以使用相同的其他条件代码。
我有一个代码连接到我的 API 并在我的 android 应用程序中获取我的微调器的值。如果没有互联网连接,我希望它用一些默认值填充它。这是我的代码。
微调器获取产品名称并使用它,但如果没有互联网怎么办,那么它应该用一些默认值填充它。
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);
}
首先,您可以创建一个方法,例如“fillWithDefaults”
private void fillWithDefaults(){
ArrayList<String> names = new ArrayList<String>();
names.add("Default value 1");
names.add("Default value 2");
names.add("Default value 3");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(GoodsInActivity.this, simple_spinner_item, names);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);
}
最后,当发生任何不需要的异常时,调用此方法来填充 Spinner。例如在 catch 块或 onErrorResponse 事件中,甚至当您的 json 数组长度为零时。
用默认值定义和初始化一个names_default(列表或数组)。然后像那样检查 goodModelArrayList 大小 ::
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);
}
当您的应用程序和 onErrorResponse 方法中没有互联网连接时,您可以使用相同的其他条件代码。