Поставить и отсортировать адаптер из массива json - PullRequest
0 голосов
/ 24 марта 2020

может кто-нибудь мне помочь? У меня есть json результат, подобный этому, на файловом сервере, и я хочу получить результат только в том случае, если значение "status" равно "Menunggu" для myadapter

`{"message" : "Berhasil", "result" :
        [
        {"unit":"Sekretariat Universitas","startdate":"25-04-2020 08.00","enddate":"25-04-2020 12.00","kegiatan":"Seminar","status":"Menunggu"},
        {"unit":"Sekretariat Universitas","startdate":"23-03-2020 22:33","enddate":"23-03-2020 22:33","kegiatan":"Rapat","status":"Disetujui"},
        {"unit":"Fakultas Teknik","startdate":"23-03-2020 08:00","enddate":"23-03-2020 12:00","kegiatan":"Rapat","status":"Menunggu"},
        {"unit":"Fakultas Universitas","startdate":"23-03-2020 22:33","enddate":"23-03-2020 22:33","kegiatan":"Rapat","status":"Disetujui"}

    ]}`

А вот мой адаптер, который я использую Функция «равно» на «setStatus», но она выдает ошибку, что мне делать?

StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.d(TAG, ">>" + response);

                try {
                    removeSimpleProgressDialog();
                    JSONObject jsonObject = new JSONObject(response);
                    if (jsonObject.optString("message").equals("Berhasil")) {
                        JSONArray dataArray = jsonObject.getJSONArray("result");

                        for (int i = 0; i < dataArray.length(); i++) {
                            JSONObject dataObj = dataArray.getJSONObject(i);
                            RuangModel ruangModel = new RuangModel();
                            ruangModel.setStatus(dataObj.optString("status").equals("Menunggu");
                            ruangModel.setKegiatan(dataObj.getString("kegiatan"));
                            ruangModel.setStartDate(dataObj.getString("startdate"));
                            ruangModel.setEndDate(dataObj.getString("enddate"));
                            ruangModel.setUnit(dataObj.getString("unit"));

                            ruangModelList.add(ruangModel);
                        }
                    }
                    adapter.notifyDataSetChanged();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }

И это мой класс RuangModel.class, в который я помещаю свой JSON результат из файлового сервера


public class RuangModel {
    private String id, unit, kegiatan, startDate, endDate, status;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getKegiatan() {
        return kegiatan;
    }

    public void setKegiatan(String kegiatan) {
        this.kegiatan = kegiatan;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

1 Ответ

1 голос
/ 24 марта 2020

ruangModel.setStatus () выдаст вам исключение, потому что если статус не равен «Menunggu», он попытается установить нулевое значение в статусе. Вместо этого попробуйте этот подход.

  for (int i = 0; i < dataArray.length(); i++) {
                            JSONObject dataObj = dataArray.getJSONObject(i);
                            RuangModel ruangModel = new RuangModel();
                            ruangModel.setStatus(dataObj.getString("status"));
                            ruangModel.setKegiatan(dataObj.getString("kegiatan"));
                            ruangModel.setStartDate(dataObj.getString("startdate"));
                            ruangModel.setEndDate(dataObj.getString("enddate"));
                            ruangModel.setUnit(dataObj.getString("unit"));


                            //Here you check the status and if its equal to "Menunggu" you add it to the list. Otherwise it will not be added to the list.
                            if(ruangModel.getStatus().equals("Menunggu")){
                            ruangModelList.add(ruangModel);
                            } 
                        }
...