使用 else 语句在一个微调器中包含两个 Json 列表

Two Json lists in one spinner using else statement

在我的应用程序中,我有 2 个微调器,其中填充了从我公司服务器上的文件中提取的 JSON 数据。 如果输入正确的 emailpasswordclientID,则会填充微调器。 现在我想补充一点,如果细节有误或不存在,它们必须显示不同的 JSON.

我试图通过在我的 onResponse 方法中调用 else if 语句来做到这一点。

总结一下 我希望每个微调器显示一个 JSON 数据数组,其中包含 categories/client 详细信息,如果登录信息是 entered/correct (这有效,但我被要求添加第二个数组以防止错误),如果有是 missing/incorrect 信息,它必须显示 JSON 数组中的错误。两个 JSON 数组都在同一个文件中。

我相信我的问题出在我的适配器上,因为它正在调用一个 ArrayList 是否可以让它在适配器这里调用两个数组列表,我想添加第二个 ArrayList这个,现在的是"CategoryName"

  spinner.setAdapter(new ArrayAdapter<>(SecondActivity.this, android.R.layout.simple_spinner_dropdown_item, CategoryName));

加载旋转器数据的代码

private void loadSpinnerData(String url) {

    RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
    StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {


            try {
                JSONObject jsonObject=new JSONObject(response);

                if (jsonObject.getInt("success") == 1) {

                    JSONArray jsonArray=jsonObject.getJSONArray("Name");
                    for (int i=0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject1=jsonArray.getJSONObject(i);

                        String category=jsonObject1.getString("Category");
                        CategoryName.add(category);
                    }
                }
                if (jsonObject.getInt("failed") == 1) {
                    JSONArray jsonArray=jsonObject.getJSONArray("errors");
                    for (int i=0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject1=jsonArray.getJSONObject(i);

                        String error=jsonObject1.getString("reason");
                        Errors.add(error);


                    }
                }
                spinner.setAdapter(new ArrayAdapter<>(SecondActivity.this, android.R.layout.simple_spinner_dropdown_item, CategoryName));


            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            error.printStackTrace();
        }
    });
    int socketTimeout=30000;
    RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
    stringRequest.setRetryPolicy(policy);

    requestQueue.add(stringRequest);

您只需使用 Errors ArrayList。目前,您将信息添加到其中(在您的第二个 if 分支中),但从未将其放入微调器中。

试试这个:

JSONObject jsonObject=new JSONObject(response);

if (jsonObject.getInt("success") == 1) {
    JSONArray jsonArray=jsonObject.getJSONArray("Name");
    for (int i=0; i < jsonArray.length(); i++) {
        JSONObject jsonObject1=jsonArray.getJSONObject(i);

        String category=jsonObject1.getString("Category");
        CategoryName.add(category);
    }
    spinner.setAdapter(new ArrayAdapter<>(SecondActivity.this, android.R.layout.simple_spinner_dropdown_item, CategoryName));
}

if (jsonObject.getInt("failed") == 1) {
    JSONArray jsonArray=jsonObject.getJSONArray("errors");
    for (int i=0; i < jsonArray.length(); i++) {
        JSONObject jsonObject1=jsonArray.getJSONObject(i);

        String error=jsonObject1.getString("reason");
        Errors.add(error);

    }
    spinner.setAdapter(new ArrayAdapter<>(SecondActivity.this, android.R.layout.simple_spinner_dropdown_item, Errors));
}