android - 如果没有互联网并且无法从数据库中检索值,则使用默认值填充 android 中的微调器
问题描述
我有一个连接到我的 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 数组长度为零时。
推荐阅读
- javascript - 如何通过补丁事件将值设置为 sanity.io 中自定义输入的任何字段?
- cocoa - 使用 NSOutlineview 实现类似 Finder 的树视图并通过延迟加载来表示其节点
- django - 在 json 字段中保存聊天对话
- coq - 无法用 mathcomp 的 finTypes 证明只有 0 小于 1
- c++ - 带有 to_iso_extended_string 的当前 UTC 日期字符串,格式为毫秒
- java - 在 Kubernetes 上使用 Kafka 触发作业
- python - 如何在多孔结构中复杂路径骨架的无向网络X图中找到入口和出口节点?
- haskell - Haskell:我如何“向后”组合函数,比如 Clojure 的线程(->)?
- bamboo - Senchacmd 没有找到系统安装的 ruby 运行时
- c# - 将数据插入版本信息