如何使用翻新功能将JSON数据解析为android studio中的表布局

问题描述 投票:0回答:1

我想使用改造来解析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>
android retrofit android-tablelayout
1个回答
1
投票

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

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

    • 对于翻新,请看一下线程here

    • 您的模型类将如下所示:

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,您可以阅读this之类的教程。
© www.soinside.com 2019 - 2024. All rights reserved.