Android (java) 基于相同的 Volley API 响应 (JSON) 创建动态 UI
Posted
技术标签:
【中文标题】Android (java) 基于相同的 Volley API 响应 (JSON) 创建动态 UI【英文标题】:Android (java) Create Dynamic UI based upon Same Volley API Response (JSON) 【发布时间】:2022-01-11 11:09:28 【问题描述】:我正在使用带有返回 JSON 的 Volley GET 请求的 android Java。该请求接受各种参数,根据这些参数计算响应并发送回。
API GET 请求获取特定科目的班级学生的分数。参数定义类和主题,并根据这些不同的列发回响应。
例如,一门学科数学有两列结果
一门英语有 7 列结果
我正在使用 RecyclerView,它具有预定义的行布局和静态标题字段/列来显示数据。
这只是一个例子,标准因不同的课程和科目而异。
这是我的 volley API 调用
String url = getString(R.string.api_url) + "grandtest_marks/?BranchClassID="+branchClassID
+"&ExamTypeID="+examTypeID+"&SubjectName="+subjectValue+"&SectionID="+sectionID;
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.GET,
url,
null,
response ->
JSONObject jsonObject;
//populate recyclerview here to show grand test marks
// Do something with response, Process the JSON
try
for (int i = 0; i < response.length(); i++)
jsonObject = response.getJSONObject(i);
//for different criteria I'll have different columns how should I incorporate that?
//get single student's marks
grandTestMarksModel = new GrandTestMarksModel(
Integer.toString(i+1),
jsonObject.getString("StudentName"),
jsonObject.getString("Test1Marks"),
jsonObject.getString("Test2Marks"),
jsonObject.getString("Test3Marks"),
jsonObject.getString("Test4Marks"),
jsonObject.getString("Test5Marks"),
jsonObject.getString("Test6Marks")
);
grandTestMarksModels.add(grandTestMarksModel);
recyclerView.setAdapter(viewGrandTestMarksAdapter);
//for
catch (JSONException e)
e.printStackTrace();
//catch
,
error ->
// this block will respond wrong registration no or password or any other network error
if (error instanceof TimeoutError)
Toast.makeText(getActivity(), "Request timed out.", Toast.LENGTH_SHORT).show();
else if (error instanceof NoConnectionError)
Toast.makeText(getActivity(), "Check your internet connection and then try again.", Toast.LENGTH_SHORT).show();
else if (error instanceof ServerError)
Toast.makeText(getActivity(), "The server could not be found. Please try again after some time!!", Toast.LENGTH_SHORT).show();
else if (error instanceof NetworkError)
Toast.makeText(getActivity(), "Network Error", Toast.LENGTH_SHORT).show();
else if (error instanceof ParseError)
Toast.makeText(getActivity(), "Parse Error", Toast.LENGTH_SHORT).show();
)
//This is for Headers If You Needed
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public Map<String, String> getHeaders()
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=UTF-8");
headers.put("Authorization", getMyJWT());
return headers;
;
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this.getContext()).addToRequestQueue(jsonArrayRequest);
【问题讨论】:
【参考方案1】:您可以使用 RecyclerView(这对每个人来说都是显而易见的选择),但它有一些挫折。但是有许多视图架构会更好用。可以使用 Epoxy 或 Litho 之类的东西。这两者都被广泛使用。
【讨论】:
如前所述,我使用的是 RecyclerView,它具有预定义的行布局,带有静态标题字段/列来显示数据。 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Android (java) 基于相同的 Volley API 响应 (JSON) 创建动态 UI的主要内容,如果未能解决你的问题,请参考以下文章