Android 如何检索一个列表,并使用改型将其按id分别显示到多个不同的recyclerviews中

Android 如何检索一个列表,并使用改型将其按id分别显示到多个不同的recyclerviews中,android,android-recyclerview,retrofit,Android,Android Recyclerview,Retrofit,我有一个布局,其内容以多个recyclerviews的形式出现。我想根据名为kode_Klasifkasi的id将列表划分为几个recyclerview。例如,阿塞特兰卡的kode_klasifikasi为11,阿塞特Tetap为12,每个都有自己的回收视图。问题是我不知道如何定义kode_klasifikasi,以便通过改型将其显示给他们自己的recyclerview,而JSON响应没有kode_klasifikasi的参数 请帮助我 以下是JSON响应: { "status": "s

我有一个布局,其内容以多个recyclerviews的形式出现。我想根据名为kode_Klasifkasi的id将列表划分为几个recyclerview。例如,阿塞特兰卡的kode_klasifikasi
为11,阿塞特Tetap为12,每个都有自己的回收视图。问题是我不知道如何定义
kode_klasifikasi
,以便通过改型将其显示给他们自己的recyclerview,而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 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();
            }
        });
    }

}
公共类活动扩展了AppCompatActivity
实现NavigationView.OnNavigationItemSelectedListener{
RecyclerView rv_aset_tetap、rv_aset_lancar;
Neraca_asetTetap适配器_asetTetap;
Neraca_ASETLANDAPTER适配器_asetLancar;
阿雷利斯特·内拉卡瓦尔斯;
创建时受保护的void(Bundle savedInstanceState){
....
rv_aset_lancar=findviewbyd(R.id.rv_aset_lancar);
adapter_asetLancar=新的Neraca_AsetLancarAdapter(此为Neracaals);
rv_aset_tetap=findviewbyd(R.id.rv_aset_tetap);
adapter_-asetTetap=新的Neraca_-AsetTetapAdapter(此为Neracaals);
getNeracaAwal();
}
公共无效getNeracaAwal(){
tahun=Integer.parseInt(tv_years.getText().toString());
Call=Call客户端
.getInstance()
.getApi()
.neraca_awal(代币、接受、布朗、塔洪);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
pDialog.dismissWithAnimation();
NeracaAwalResponse NeracaAwalResponse=response.body();
if(response.issusccessful()){
if(response.getStatus().equals(“success”)){
//我应该在这里写些什么来定义kode_Klasifkasi?
}
}否则{
pDialog.dismissWithAnimation();
Toast.makeText(NeracaAwalActivity.this,“Gagal mengambil data neraca awal”,Toast.LENGTH_LONG.show();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
pDialog.dismissWithAnimation();
Toast.makeText(NeracaAwalActivity.this,“Kesalahan terjadi,coba beberapa saat lagi.”,Toast.LENGTH_SHORT.show();
}
});
}
}

根据您的JSON模式,您必须使用neracaAwalResonse.getNeracaAwals()迭代得到的列表,以基于klasifikasi创建单独的列表,然后将不同的列表传递给不同的recyclerview

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();
        }
    });
}

}
公共类活动扩展了AppCompatActivity
实现NavigationView.OnNavigationItemSelectedListener{
RecyclerView rv_aset_tetap、rv_aset_lancar;
Neraca_asetTetap适配器_asetTetap;
Neraca_ASETLANDAPTER适配器_asetLancar;
阿雷利斯特·内拉卡瓦尔斯;
ArrayList neracaAwalAsetLancer;
ArrayList Neracaawalsasettap;
private final int-asetLancer=11;//aset-lancer值
私有最终int ASETETTAP=12;//aset tetap值
创建时受保护的void(Bundle savedInstanceState){
....
neracaAwalAsetLancer=newarraylist();
neracaawalsasettap=新的Arraylist();
rv_aset_lancar=findviewbyd(R.id.rv_aset_lancar);
rv_aset_tetap=findviewbyd(R.id.rv_aset_tetap);
getNeracaAwal();
}
公共void setAdapter(){
adapter_asetLancar=新的Neraca_AsetLancarAdapter(这是neracaAwalAsetLancer);
adapter_-asetTetap=新的Neraca_-AsetTetapAdapter(此,Neracaawalasettetetetap);
rv_aset_lancar.设置适配器(适配器_asetLancar);
rv_aset_tetap.设置适配器(适配器_ASETETTAP);
}
公共无效getNeracaAwal(){
tahun=Integer.parseInt(tv_years.getText().toString());
Call=Call客户端
.getInstance()
.getApi()
.neraca_awal(代币、接受、布朗、塔洪);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
pDialog.dismissWithAnimation();
NeracaAwalResponse NeracaAwalResponse=response.body();
if(response.issusccessful()){
if(response.getStatus().equals(“success”)){
//您必须迭代列表才能找到。
neracaAwals=neracaAwalResonse.getNeracaAwals();

对于(int i=0;i您可以使用第一个recyclerview,然后在recyclerview项上单击打开另一个。它不是另一个recyclerview中的recyclerview,它们的级别是相同的。一个布局上只有两个或多个不同的recyclerview,不同的是kode_Klasifkasi@rachna
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();
        }
    });
}

}