如何从JSONArray中获取最后一个对象

3

我有一个 listView,在其中展示每个学科的 学生出勤情况,我将解析 JSON 直到倒数第二位。为此,在获取总数时,我返回了 attendanceBeanList.size()-1。参见下面的代码。 我已经完成了这个:

 private List<TotalAttendance_Bean> attendanceBeanList;
 public TotalAttendanceAdapter(Activity activity, List<TotalAttendance_Bean> attendanceBeanList)
{
    super();
    this.activity = activity;
    this.attendanceBeanList = attendanceBeanList;
}

@Override
public int getCount() {
   return attendanceBeanList.size()-1;
}

现在,当我要获取最后一个对象时,我卡住了。我必须为每个学生获取总出勤率。为此,我必须从下面的JSONArray中获取最后一个对象。

这是我的JSON:

[
  {
    "subject_name": "English-I",
    "total_classes": "2",
    "total_attended": "2",
    "percentage": "100"
  },
  {
    "subject_name": "English-I",
    "total_classes": "2",
    "total_attended": "2",
    "percentage": "100"
  },
  {
      "subject_name": "English-I",
      "total_classes": "2",
      "total_attended": "2",
      "percentage": "100"
  },
  {
     "subject_name": "English-I",
     "total_classes": "2",
     "total_attended": "2",
     "percentage": "100"
 },
  {
      "total_attendance": 90%
  }
]

这是我的XML。 在这个布局中,我显示了所有科目的考勤记录列表,并且我需要在蓝色文本视图中显示总出勤率。请参考以下图片:layout

你发布的Json不合法,请使用验证器检查并修正代码。 - OBX
2
先生,我已经检查过了,它显示为“有效的JSON”。我们不能在这个JSON里做吗? - Arjun Singh
2个回答

8
你可以在解析所有的students记录后获取total_attendance
JSONArray obj = new JSONArray(yourStringResponse);

// get the last object
JSONObject tot_obj = obj.getJSONObject(obj.length()-1);

// get String from last object
String tot_str = tot_obj.optString("total_attendance");

注意:optString 将会把你的数据转换为 String,否则会返回一个空的字符串,例如""
现在,你可以像下面这样在你的ActivityTextView中显示数据:
yourTextView.setText(tot_str);

如果需要,您可以将tot_str传递给Adapter

public TotalAttendanceAdapter(Activity activity
                        , List<TotalAttendance_Bean> attendanceBeanList
                        , String tot)
{
    super();
    this.activity = activity;
    this.attendanceBeanList = attendanceBeanList;
    this.tot = tot;
}

0

在Android Kotlin中从JSONArray获取最后一个对象

第一种方法

val bookings = jsonObject.getJSONArray("result")
val lastObj: JSONObject = bookings.getJSONObject((bookings.length() - 1))
hAddress.text = lastObj.optString("service_location")
hDate.text = lastObj.optString("visit_date")
hTime.text = lastObj.optString("visit_time")

第二种方法
val bookings = jsonObject.getJSONArray("result")
for (i1 in 0 until bookings.length()) {
    val c1: JSONObject = bookings.getJSONObject(i1)
    hAddress.text = c1.optString("service_location")
    hDate.text = c1.optString("visit_date")
    hTime.text = c1.optString("visit_time")
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接