Android 如何检索一个列表,并使用改型将其按id分别显示到多个不同的recyclerviews中
我有一个布局,其内容以多个recyclerviews的形式出现。我想根据名为kode_Klasifkasi的id将列表划分为几个recyclerview。例如,阿塞特兰卡的kode_klasifikasiAndroid 如何检索一个列表,并使用改型将其按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
为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();
}
});
}
}