如何使用Retrofit将JSON数据解析为Android工作室中的表布局



我想使用改造来解析 json 数据并将其绑定到表布局。我熟悉改造,但我不知道如何解析为表格布局,我以前从未使用过表格布局。那我该怎么办?你能给我一个参考链接或一些教程吗?如果我通过微调器选择类别,数据将显示在表格布局中。 提前感谢!

数据将成百上千甚至更多。这是我的 json 响应示例:

{
"status": "success",
"saldo_awal": {
"jumlah": "25000"
},
"buku_besar": [
{
"id": 49,
"tanggal": "2019-11-10",
"keterangan": "kas  pada kw002",
"Saldo_Awal": "25000",
"Debit": 0,
"Kredit": 20000,
"Saldo": 5000
},
{
"id": 52,
"tanggal": "2019-11-12",
"keterangan": "kas  pada kw003",
"Saldo_Awal": "25000",
"Debit": 0,
"Kredit": 15000,
"Saldo": -10000
},
{
"id": 53,
"tanggal": "2019-11-12",
"keterangan": "kas  pada kw003",
"Saldo_Awal": "25000",
"Debit": 50000,
"Kredit": 0,
"Saldo": 40000
}
],
"total_kredit": "55000",
"total_debit": "50000"
}

这是我的 XML :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.ardiarahma.sik_bumdesa.activities.dashboard.BukuBesarActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/four"
app:popupTheme="@style/AppTheme.PopupOverlay">
<ImageButton
android:id="@+id/toolbar_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/toolbar_back" />
<TextView
android:id="@+id/title_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp"
android:text="Buku Besar"
android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
android:textColor="#FFFFFF" />
</android.support.v7.widget.Toolbar>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardCornerRadius="20dp">
<LinearLayout
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_margin="15dp">
<ImageButton
android:id="@+id/jurnal_date"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.2"
android:background="#0000"
android:gravity="center"
android:src="@drawable/ic_date" />
<TextView
android:id="@+id/month"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.4"
android:gravity="center"
android:text="Bulan"
android:textAlignment="center"
android:textSize="16dp" />
<TextView
android:id="@+id/year"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.4"
android:gravity="center"
android:text="Tahun"
android:textAlignment="center"
android:textSize="16dp" />
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
app:cardCornerRadius="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="vertical">
<Spinner
android:id="@+id/sp_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp" />
<TextView
android:id="@+id/account_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="30dp">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.4"
android:paddingLeft="10dp"
android:text="Saldo Awal"
android:textColor="@color/three"
android:textSize="16dp" />
<TextView
android:id="@+id/tv_saldoAwal"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="10dp"
android:layout_weight="0.4"
android:text="1.000.000"
android:textAlignment="textEnd"
android:textSize="16dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="30dp">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.4"
android:paddingLeft="10dp"
android:text="Saldo Akhir"
android:textColor="@color/three"
android:textSize="16dp" />
<TextView
android:id="@+id/tv_saldoAkhir"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="10dp"
android:layout_weight="0.4"
android:text="10.500.000"
android:textAlignment="textEnd"
android:textSize="16dp" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_margin="10dp"
app:cardCornerRadius="20dp">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp">
<TableRow
android:layout_width="match_parent"
android:gravity="center_vertical">
<TextView
android:layout_width="0dp"
android:layout_weight="0.1"
android:gravity="center"
android:text="Tgl"
android:textColor="@color/three" />
<TextView
android:layout_weight="0.1"
android:gravity="center"
android:text="Keterangan"
android:textColor="@color/three" />
<TextView
android:layout_gravity="center"
android:layout_weight="0.05"
android:text="Debit"
android:textColor="@color/three" />
<TextView
android:layout_weight="0.05"
android:gravity="center"
android:text="Kredit"
android:textColor="@color/three" />
<TextView
android:layout_weight="0.1"
android:gravity="center"
android:text="Saldo"
android:textColor="@color/three" />
</TableRow>
<TableRow>
<!--row 1-->
</TableRow>
<TableRow>
<!--row 2-->
</TableRow>
<TableRow>
<!--row 3-->
</TableRow>
<TableRow>
<!--row 4, etc-->
</TableRow>
<TableRow>
<TextView
android:layout_width="0dp"
android:layout_weight="0.1"
android:gravity="center" />
<TextView
android:layout_weight="0.1"
android:ellipsize="end"
android:gravity="center"
android:text="Total"
android:textColor="@color/three" />
<TextView
android:id="@+id/tv_totaldebit"
android:layout_gravity="center"
android:layout_weight="0.05"
android:text="11.000.000"
android:textColor="@color/three" />
<TextView
android:id="@+id/tv_totalkredit"
android:layout_weight="0.05"
android:gravity="center"
android:text="500.000"
android:textColor="@color/three" />
<TextView
android:id="@+id/tv_totalsaldo"
android:layout_weight="0.1"
android:gravity="end"
android:paddingRight="10dp"
android:text="10.500.000"
android:textColor="@color/three" />
</TableRow>
</TableLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>

</LinearLayout>

您的问题似乎有两个部分:

  1. 对于 JSON 解析部分,您可以使用 GSON 库进行改造。

    • 对于改造,请在此处查看线程

    • 模型类如下所示:

com.ardiarahma.sik_bumdesa.models.BukuBesar.java

package com.ardiarahma.sik_bumdesa.models;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class BukuBesar {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("tanggal")
@Expose
private String tanggal;
@SerializedName("keterangan")
@Expose
private String keterangan;
@SerializedName("Saldo_Awal")
@Expose
private String saldoAwal;
@SerializedName("Debit")
@Expose
private Integer debit;
@SerializedName("Kredit")
@Expose
private Integer kredit;
@SerializedName("Saldo")
@Expose
private Integer saldo;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTanggal() {
return tanggal;
}
public void setTanggal(String tanggal) {
this.tanggal = tanggal;
}
public String getKeterangan() {
return keterangan;
}
public void setKeterangan(String keterangan) {
this.keterangan = keterangan;
}
public String getSaldoAwal() {
return saldoAwal;
}
public void setSaldoAwal(String saldoAwal) {
this.saldoAwal = saldoAwal;
}
public Integer getDebit() {
return debit;
}
public void setDebit(Integer debit) {
this.debit = debit;
}
public Integer getKredit() {
return kredit;
}
public void setKredit(Integer kredit) {
this.kredit = kredit;
}
public Integer getSaldo() {
return saldo;
}
public void setSaldo(Integer saldo) {
this.saldo = saldo;
}
}

com.ardiarahma.sik_bumdesa.models.Model.java

package com.ardiarahma.sik_bumdesa.models;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Model {
@SerializedName("status")
@Expose
private String status;
@SerializedName("saldo_awal")
@Expose
private SaldoAwal saldoAwal;
@SerializedName("buku_besar")
@Expose
private List<BukuBesar> bukuBesar = null;
@SerializedName("total_kredit")
@Expose
private String totalKredit;
@SerializedName("total_debit")
@Expose
private String totalDebit;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public SaldoAwal getSaldoAwal() {
return saldoAwal;
}
public void setSaldoAwal(SaldoAwal saldoAwal) {
this.saldoAwal = saldoAwal;
}
public List<BukuBesar> getBukuBesar() {
return bukuBesar;
}
public void setBukuBesar(List<BukuBesar> bukuBesar) {
this.bukuBesar = bukuBesar;
}
public String getTotalKredit() {
return totalKredit;
}
public void setTotalKredit(String totalKredit) {
this.totalKredit = totalKredit;
}
public String getTotalDebit() {
return totalDebit;
}
public void setTotalDebit(String totalDebit) {
this.totalDebit = totalDebit;
}
}

com.ardiarahma.sik_bumdesa.models.SaldoAwal.java

package com.ardiarahma.sik_bumdesa.models;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class SaldoAwal {
@SerializedName("jumlah")
@Expose
private String jumlah;
public String getJumlah() {
return jumlah;
}
public void setJumlah(String jumlah) {
this.jumlah = jumlah;
}
}
  1. 对于看起来相同的重复项目,我建议使用ListView,您可以按照这样的教程进行操作。

最新更新