0

I try to get xml data then I parse it to JSON, I use OkHttp as a connection. I managed to get data from LOG but I can't display it in my RecyclerView, when I LOG to adapter and the result is size 0

I set the response to the model and sharedpreference

The point of the problem is that I just don't understand how to take the response from the presenter then I set it to the adapter in the main Fragment.

public class ParentCategories {

@SerializedName("idkategori")
@Expose
private String idkategori;
@SerializedName("namakategori")
@Expose
private String namakategori;
@SerializedName("fileicon")
@Expose
private String fileicon;
@SerializedName("subkategori")
@Expose
private SubCategories subkategori;

public ParentCategories(Parcel in) {
    this.idkategori = in.readString();
    this.namakategori = in.readString();
    this.fileicon = in.readString();
}

public ParentCategories() {

}

public String getIdkategori() {
    return idkategori;
}

public void setIdkategori(String idkategori) {
    this.idkategori = idkategori;
}

public String getNamakategori() {
    return namakategori;
}

public void setNamakategori(String namakategori) {
    this.namakategori = namakategori;
}

public String getFileicon() {
    return fileicon;
}

public void setFileicon(String fileicon) {
    this.fileicon = fileicon;
}

public SubCategories getSubkategori() {
    return subkategori;
}

public void setSubkategori(SubCategories subkategori) {
    this.subkategori = subkategori;
}

}

public class CategoriesPresenter {
....
public void onResponse(Call call, Response response) throws IOException {
                String mMessage = response.body().string();
                JSONObject jsonObj = null;
                try {
                    jsonObj = XML.toJSONObject(mMessage);
                    JSONObject jsonObject = new JSONObject(jsonObj.toString());
                    JSONObject object = jsonObject.getJSONObject("posh");

                    String attr2 = object.getString("resultcode");
                    com.davestpay.apphdi.helper.Log.d("hasil", String.valueOf(object));
                    if (attr2.equalsIgnoreCase("0000")) {
                        String idAgen = object.getString("idagen");
                        int jumlahKategori = object.getInt("jumlahkategori");

                        JSONArray category = object.getJSONArray("kategori");
                        List<ParentCategories> parentCategories = new ArrayList<ParentCategories>();
                        for (int i = 0; i < category.length(); i++) {
                            ParentCategories categories = new ParentCategories();
                            JSONObject c = category.getJSONObject(i);
                            Log.d(TAG, "onResponseC: "+c);
                            String idKategori = c.getString("idkategori");
                            String namaKategori = c.getString("namakategori");
                            Log.d(TAG, "onResponseNamaKategori: "+namaKategori);
                            String fileIcon = c.getString("fileicon");

                            JSONObject subCategories = c.getJSONObject("subkategori");
                            JSONArray subCategory = subCategories.getJSONArray("kategori2");
                            Log.d(TAG, "onResponseSubCategories: "+subCategory);
                            for (int subCatPosition = 0; subCatPosition < subCategory.length(); subCatPosition++) {
                                SecondCategories secondCategories = new SecondCategories();
                                List<SecondCategories> listSecondCategories = new ArrayList<>();
                                JSONObject sc = subCategory.getJSONObject(subCatPosition);
                                String secIdKategori = sc.getString("idkategori");
                                String secNamaKategori = sc.getString("namakategori");
                                String secFileIcon = sc.getString("fileicon");

                                secondCategories.setIdkategori(secIdKategori);
                                secondCategories.setNamakategori(secNamaKategori);
                                secondCategories.setFileicon(secFileIcon);

                                listSecondCategories.add(secondCategories);

                            }

                            categories.setIdkategori(idKategori);
                            categories.setNamakategori(namaKategori);
                            categories.setFileicon(fileIcon);

                            parentCategories.add(categories);
                            Log.d(TAG, "onResponseFinalCategories: "+parentCategories);



                        }
                        iCategories.onSuccessCategories(parentCategories);
                        preferenceHelper.clear(PreferenceHelper.CATEGORIES);
                        preferenceHelper.putList(PreferenceHelper.CATEGORIES, parentCategories);
                    } else {
                        Log.d(TAG, "onResponse: ");
                    }


                } catch (JSONException e) {
                    com.davestpay.apphdi.helper.Log.e("JSON exception", e.getMessage());
                    e.printStackTrace();
                }
            }

}

private void getInit() {

        if (preferenceHelper != null) {
            idAgen = preferenceHelper.getString(PreferenceHelper.ID_AGEN);
            namaAgen = preferenceHelper.getString(PreferenceHelper.NAMA_AGEN);
            password = preferenceHelper.getString(PreferenceHelper.PASSWORD);
            categories = preferenceHelper.getList(PreferenceHelper.CATEGORIES, ParentCategories[].class);
        }

        authPresenter = new AuthPresenter(getContext());

        presenter = new CategoriesPresenter();
        presenter.setBaseView(this);
        presenter.onCreate(getContext());

        if (authPresenter.isLoggedIn()) {

//            kategori.setText(categories.toString());
            presenter.getCategories(idAgen, password, counter);

        }

        kategori = mView.findViewById(R.id.kategori);
        categories = new ArrayList<>();

        rvMain = mView.findViewById(R.id.rv_categories);
        adapter = new CategoriesListViewAdapter(getContext(), categories);
        layoutManager = new LinearLayoutManager(getdActivity());
        adapter.notifyDataSetChanged();
        rvMain.setLayoutManager(layoutManager);
        rvMain.setAdapter(adapter);

    }

1 Answers1

0

This is the problem.

 categories = new ArrayList<>();

Here, you are initialising categories to new ArrayList<>(); It is like you are creating a new arraylist. Just remove this line.

Varun
  • 214
  • 1
  • 5