Как получить список и отобразить его отдельно по идентификатору в несколько различных обзоров переработчиков с помощью модернизации - PullRequest
0 голосов
/ 21 октября 2019

У меня есть макет, содержимое которого представлено в виде нескольких обзоров. Я хочу разделить список на несколько утилитарных представлений на основе идентификатора с именем kode_klasifikasi. Например, kode_klasifikasi из Aset Lancar равно 11, Aset Tetap равно 12, у каждого из них есть свой собственный обзор переработчика. Проблема в том, что я не знаю, как определить kode_klasifikasi, чтобы он мог отображаться в собственном представлении реселлера с помощью Retrofit, тогда как в ответе JSON отсутствует параметр kode_klasifikasi.

Пожалуйста, помогите мне.

Вот ответ JSON:

{
    "status": "success",
    "neraca_awal": [
        {
            "kode_klasifikasi": 11,
            "kode_akun": 1110,
            "tanggal": "2019-09-19",
            "jumlah": "50000",
            "id_neraca_awal": 4
        },
        {
            "kode_klasifikasi": 11,
            "kode_akun": 1111,
            "tanggal": "2019-09-23",
            "jumlah": "10000",
            "id_neraca_awal": 2
        },
        {
            "kode_klasifikasi": 12,
            "kode_akun": 1210,
            "tanggal": "2019-09-10",
            "jumlah": "60000",
            "id_neraca_awal": 6
        }
    ],
    "total_kredit": 0,
    "total_debit": 120000
}

Это модели:

public class NeracaAwalResponse {
    @SerializedName("status")
    @Expose
    private String status;

    @SerializedName("neraca_awal")
    @Expose
    private ArrayList<NeracaAwal> neracaAwals = null;

    @SerializedName("total_kredit")
    @Expose
    private int total_kredit;

    @SerializedName("total_debit")
    @Expose
    private int total_debit;

    public NeracaAwalResponse(String status, ArrayList<NeracaAwal> neracaAwals, int total_kredit, int total_debit) {
        this.status = status;
        this.neracaAwals = neracaAwals;
        this.total_kredit = total_kredit;
        this.total_debit = total_debit;
    }

    public String getStatus() {
        return status;
    }

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

    public ArrayList<NeracaAwal> getNeracaAwals() {
        return neracaAwals;
    }

    public void setNeracaAwals(ArrayList<NeracaAwal> neracaAwals) {
        this.neracaAwals = neracaAwals;
    }

    public int getTotal_kredit() {
        return total_kredit;
    }

    public void setTotal_kredit(int total_kredit) {
        this.total_kredit = total_kredit;
    }

    public int getTotal_debit() {
        return total_debit;
    }

    public void setTotal_debit(int total_debit) {
        this.total_debit = total_debit;
    }
}
public class NeracaAwal {

    @SerializedName("kode_klasifikasi")
    @Expose
    private int kode_klasifikasi;

    @SerializedName("kode_akun")
    @Expose
    private int kode_akun;

    @SerializedName("tanggal")
    @Expose
    private String tanggal;

    @SerializedName("jumlah")
    @Expose
    private String jumlah;

    @SerializedName("id_neraca_awal")
    @Expose
    private int id_neraca_awal;

    public NeracaAwal(int kode_klasifikasi, int kode_akun, String tanggal, String jumlah, int id_neraca_awal) {
        this.kode_klasifikasi = kode_klasifikasi;
        this.kode_akun = kode_akun;
        this.tanggal = tanggal;
        this.jumlah = jumlah;
        this.id_neraca_awal = id_neraca_awal;
    }

    public int getKode_klasifikasi() {
        return kode_klasifikasi;
    }

    public void setKode_klasifikasi(int kode_klasifikasi) {
        this.kode_klasifikasi = kode_klasifikasi;
    }

    public int getKode_akun() {
        return kode_akun;
    }

    public void setKode_akun(int kode_akun) {
        this.kode_akun = kode_akun;
    }

    public String getTanggal() {
        return tanggal;
    }

    public void setTanggal(String tanggal) {
        this.tanggal = tanggal;
    }

    public String getJumlah() {
        return jumlah;
    }

    public void setJumlah(String jumlah) {
        this.jumlah = jumlah;
    }

    public int getId_neraca_awal() {
        return id_neraca_awal;
    }

    public void setId_neraca_awal(int id_neraca_awal) {
        this.id_neraca_awal = id_neraca_awal;
    }
}

Этомоя активность:

public class NeracaAwalActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    RecyclerView rv_aset_tetap, rv_aset_lancar;
    Neraca_AsetTetapAdapter adapter_asetTetap;
    Neraca_AsetLancarAdapter adapter_asetLancar;
    ArrayList<NeracaAwal> neracaAwals;

    protected void onCreate(Bundle savedInstanceState) {

    ....

        rv_aset_lancar = findViewById(R.id.rv_aset_lancar);
        adapter_asetLancar = new Neraca_AsetLancarAdapter(this, neracaAwals);

        rv_aset_tetap = findViewById(R.id.rv_aset_tetap);
        adapter_asetTetap= new Neraca_AsetTetapAdapter(this, neracaAwals);

        getNeracaAwal();
    }

    public void getNeracaAwal(){
        tahun = Integer.parseInt(tv_years.getText().toString());

        Call<NeracaAwalResponse> call = RetrofitClient
                .getInstance()
                .getApi()
                .neraca_awal(token, accept, bulan, tahun);
        call.enqueue(new Callback<NeracaAwalResponse>() {
            @Override
            public void onResponse(Call<NeracaAwalResponse> call, Response<NeracaAwalResponse> response) {
                pDialog.dismissWithAnimation();
                NeracaAwalResponse neracaAwalResponse = response.body();
                if (response.isSuccessful()){
                    if (neracaAwalResponse.getStatus().equals("success")){

                       //what should I write here to define the kode_klasifikasi?

                    }
                }else {
                    pDialog.dismissWithAnimation();
                    Toast.makeText(NeracaAwalActivity.this, "Gagal mengambil data neraca awal", Toast.LENGTH_LONG).show();

                }
            }

            @Override
            public void onFailure(Call<NeracaAwalResponse> call, Throwable t) {
                pDialog.dismissWithAnimation();
                Toast.makeText(NeracaAwalActivity.this, "Kesalahan terjadi, coba beberapa saat lagi.", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

1 Ответ

1 голос
/ 21 октября 2019

В соответствии с вашей схемой JSON, вы должны выполнить итерацию полученного списка, используя neracaAwalResonse.getNeracaAwals () , чтобы создать отдельный список на основе klasifikasi , а затем передать другой список другомупереработчик вид.

public class NeracaAwalActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

RecyclerView rv_aset_tetap, rv_aset_lancar;
Neraca_AsetTetapAdapter adapter_asetTetap;
Neraca_AsetLancarAdapter adapter_asetLancar;
ArrayList<NeracaAwal> neracaAwals;
ArrayList<NeracaAwal> neracaAwalAsetLancer;
ArrayList<NeracaAwal> neracaAwalsAsetTetap;
private final int asetLancer = 11; //aset lancer value
private final int asetTetap = 12; //aset tetap value

protected void onCreate(Bundle savedInstanceState) {

....
    neracaAwalAsetLancer = new ArrayList();
    neracaAwalsAsetTetap = new Arraylist();
    rv_aset_lancar = findViewById(R.id.rv_aset_lancar);


    rv_aset_tetap = findViewById(R.id.rv_aset_tetap);


    getNeracaAwal();
}

public void setAdapter(){
  adapter_asetLancar = new Neraca_AsetLancarAdapter(this, neracaAwalAsetLancer);

adapter_asetTetap= new Neraca_AsetTetapAdapter(this, neracaAwalAsetTetap);
 rv_aset_lancar.setAdapter(adapter_asetLancar);
 rv_aset_tetap.setAdapter(adapter_asetTetap);
}

public void getNeracaAwal(){
    tahun = Integer.parseInt(tv_years.getText().toString());

    Call<NeracaAwalResponse> call = RetrofitClient
            .getInstance()
            .getApi()
            .neraca_awal(token, accept, bulan, tahun);
    call.enqueue(new Callback<NeracaAwalResponse>() {
        @Override
        public void onResponse(Call<NeracaAwalResponse> call, Response<NeracaAwalResponse> response) {
            pDialog.dismissWithAnimation();
            NeracaAwalResponse neracaAwalResponse = response.body();
            if (response.isSuccessful()){
                if (neracaAwalResponse.getStatus().equals("success")){
                  //You have to iterate the list to find.
                   neracaAwals = neracaAwalResonse.getNeracaAwals();
                  for(int i=0; i<neracaAwals.size(); i++){
                     NeracaAwal neracaAwal = neracaAwals.get(i);
                     if(neracaAwal.getKode_klasifikasi() == asetLancer){
                        neracaAwalAsetLancer.add(neracaAwal);
                     }else if(neracaAwal.getKode_klasifikasi() == asetTetap){
                       neracaAwalAsetTetap.add(neracaAwal);
                     }
                  }
                   setAdapter();
                }
            }else {
                pDialog.dismissWithAnimation();
                Toast.makeText(NeracaAwalActivity.this, "Gagal mengambil data neraca awal", Toast.LENGTH_LONG).show();

            }
        }

        @Override
        public void onFailure(Call<NeracaAwalResponse> call, Throwable t) {
            pDialog.dismissWithAnimation();
            Toast.makeText(NeracaAwalActivity.this, "Kesalahan terjadi, coba beberapa saat lagi.", Toast.LENGTH_SHORT).show();
        }
    });
}

}
...