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的主要内容,如果未能解决你的问题,请参考以下文章

Groovy与Gradle在Android中的应用

android使用串口

android使用串口

android使用串口

android使用串口

一起Talk Android吧(第三百三十六回: Android中的volley一)