Json ListView 中未显示数据
Json Data Not Displaying in ListView
我正在尝试将 Json 数据解析为列表视图
列表视图已声明,我使用的 Url 是用 Uri.Builder 构建的,我已经用 POSTMAN 测试了 URL 并且它可以工作并显示数据(在 PostMan 上)
我正在使用 Volley 来获取数据
我不知道是什么问题
我使用的代码可用于填充其他列表视图,但只要我添加更多参数,它就会显示空白
我的Json数据
{"success": 1,"Name": [{"ProjectDescription": "Project Name"},{"TaskCode": "VAL001"},{"TasDescription": "Value text
test"}]}
我的代码
private void LoadTaskSpinner(String url) {
final ProgressDialog pd=new ProgressDialog(reportActivity.this);
pd.setMessage("Please Wait..Loading Time Log Data");
pd.setCanceledOnTouchOutside(false);
pd.show();
RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pd.cancel();
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 task=jsonObject1.getString("ProjectDescription");
String code=jsonObject1.getString("TaskCode");
String desc=jsonObject1.getString("TasDescription");
Project.add(task);
Project.add(code);
Project.add(desc);
}
}
report.setAdapter(new ArrayAdapter<>(reportActivity.this, android.R.layout.simple_spinner_dropdown_item, Project));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
error.printStackTrace();
}
});
int socketTimeout=30000;
RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
requestQueue.add(stringRequest);
}
检查是否 strings != null && strings != "" 然后添加到项目中。
Shiv Kumar,为我建议了一个编辑,
这解决了我的问题
JSONObject jsonObject1=jsonArray.getJSONObject(i);
String key=jsonObject1.keys().next();
String task=jsonObject1.getString(key);
// String code=jsonObject1.getString("TaskCode");
// String desc=jsonObject1.getString("TasDescription");
Project.add(task);
//Project.add(code);
//Project.add(desc);
我正在尝试将 Json 数据解析为列表视图 列表视图已声明,我使用的 Url 是用 Uri.Builder 构建的,我已经用 POSTMAN 测试了 URL 并且它可以工作并显示数据(在 PostMan 上) 我正在使用 Volley 来获取数据 我不知道是什么问题 我使用的代码可用于填充其他列表视图,但只要我添加更多参数,它就会显示空白
我的Json数据
{"success": 1,"Name": [{"ProjectDescription": "Project Name"},{"TaskCode": "VAL001"},{"TasDescription": "Value text
test"}]}
我的代码
private void LoadTaskSpinner(String url) {
final ProgressDialog pd=new ProgressDialog(reportActivity.this);
pd.setMessage("Please Wait..Loading Time Log Data");
pd.setCanceledOnTouchOutside(false);
pd.show();
RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pd.cancel();
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 task=jsonObject1.getString("ProjectDescription");
String code=jsonObject1.getString("TaskCode");
String desc=jsonObject1.getString("TasDescription");
Project.add(task);
Project.add(code);
Project.add(desc);
}
}
report.setAdapter(new ArrayAdapter<>(reportActivity.this, android.R.layout.simple_spinner_dropdown_item, Project));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
error.printStackTrace();
}
});
int socketTimeout=30000;
RetryPolicy policy=new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
requestQueue.add(stringRequest);
}
检查是否 strings != null && strings != "" 然后添加到项目中。
Shiv Kumar,为我建议了一个编辑, 这解决了我的问题
JSONObject jsonObject1=jsonArray.getJSONObject(i);
String key=jsonObject1.keys().next();
String task=jsonObject1.getString(key);
// String code=jsonObject1.getString("TaskCode");
// String desc=jsonObject1.getString("TasDescription");
Project.add(task);
//Project.add(code);
//Project.add(desc);