首页 > 解决方案 > 如果没有互联网并且无法从数据库中检索值,则使用默认值填充 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);


    }

标签: androidjsonspinnerandroid-spinner

解决方案


首先,您可以创建一个方法,例如“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 数组长度为零时。


推荐阅读