使用 else 语句在一个微调器中包含两个 Json 列表
Two Json lists in one spinner using else statement
在我的应用程序中,我有 2 个微调器,其中填充了从我公司服务器上的文件中提取的 JSON 数据。
如果输入正确的 email
、password
和 clientID
,则会填充微调器。
现在我想补充一点,如果细节有误或不存在,它们必须显示不同的 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));
}
在我的应用程序中,我有 2 个微调器,其中填充了从我公司服务器上的文件中提取的 JSON 数据。
如果输入正确的 email
、password
和 clientID
,则会填充微调器。
现在我想补充一点,如果细节有误或不存在,它们必须显示不同的 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));
}