簡體   English   中英

如何從演示者解析JSON並將其設置為RecyclerView(Android)

[英]How to parsing JSON from presenter and set to RecyclerView(Android)

我嘗試獲取xml數據,然后將其解析為JSON,我使用OkHttp作為連接。 我設法從LOG獲取數據,但是當我登錄到適配器並且結果為0時,我無法在RecyclerView中顯示數據

我將響應設置為模型和sharedpreference

問題的重點在於,我只是不了解如何從演示者那里獲得響應,然后將其設置為主Fragment中的適配器。

公共類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);

    }

這就是問題。

 categories = new ArrayList<>();

在這里,您正在將類別初始化為新的ArrayList <>();。 就像您正在創建一個新的arraylist。 只需刪除此行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM