【问题标题】:Android (java) Create Dynamic UI based upon Same Volley API Response (JSON)Android (java) 基于相同的 Volley API 响应 (JSON) 创建动态 UI
【发布时间】: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);

【问题讨论】:

    标签: java android android-volley response


    【解决方案1】:

    您可以使用 RecyclerView(这对每个人来说都是显而易见的选择),但它有一些挫折。但是有许多视图架构会更好用。可以使用 Epoxy 或 Litho 之类的东西。这两者都被广泛使用。

    【讨论】:

    • 如前所述,我使用的是 RecyclerView,它具有预定义的行布局,带有静态标题字段/列来显示数据。
    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2016-08-10
    • 2021-04-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多