Android将Json转换为ArrayList Multilevel Expandable Listview

时间:2014-12-08 03:10:00

标签: java android json listview arraylist

我是Android编程的新手。我在Multilevel ExpandableListview上有一个来自json的数据类。我想将DivisionName值显示为列表的第一行(父级),将SubDivisionName值显示为第二行(子级),将所有Vehicle值显示为第三行(孙级)。所以,这是json数据

[
{
    "DivisionID": "2c0e9dc1-a6a7",
    "DivisionName": "Tyuio",
    "SubDivision": [
        {
            "SubDivisionID": "70c3ac53-eec6",
            "SubDivisionName": "FM2222",
            "Vehicle": [
                {
                    "Nopol": "00571564",
                    "LastUpdate": "Oct 10 2010 10:10AM",
                    "LastSpeed": 0,
                    "LastLon": 106.82176
                    "Location": "KNOWHERE"
                },
                {
                    "Nopol": "352848020936627",
                    "LastUpdate": "Oct 10 2010 10:10AM",
                    "LastSpeed": 0,
                    "LastLon": 10124.228
                    "Location": "KNOWHERE2"
                }
            ]
        }
    ]
}
]

我尝试将其填充到ArrayList中。我已经能够解析json数据了。我想通过json列出。这是Multilevel expandableListview代码

private static final String DIV_NAME= "DivisionName";
private static final String SUBDIV_NAME = "SubDivisionName";
private static final String TAG_NOPOL = "Nopol";

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

// third row (subchild-list)
    ArrayList<ItemList> mItemListArray=new ArrayList<ItemList>();
    mItemListArray.add(new ItemList(TAG_NOPOL, TAG_LOCATION,TAG_LONG));

// second row (child-list)
    pSubItemArrayList=new ArrayList<SubCategory>();
    pSubItemArrayList.add(new SubCategory(SUBDIV_NAME, mItemListArray));    

// first row (parent-list)
    pProductArrayList=new ArrayList<Product>();
    pProductArrayList.add(new Product(DIV_NAME, pSubItemArrayList));

我想将tyuio显示为列表(父级)的第一行,将FM222显示为列表(子级)的第二行,并将所有车辆值显示为第三行(孙级)。这些JSON数据是动态的。有没有办法将json转换为这个arrayList?我见过很多教程,但那些对我没什么帮助。我感谢任何帮助。提前致谢

我指的是thisthis

1 个答案:

答案 0 :(得分:0)

您需要将回复转换为列表。

我建议您执行以下操作:

创建响应类:

public class DivisionResponse {

    @SerializedName("DivisionID")
    public String divisionId;

    @SerializedName("DivisionName")
    public String divisionName;

    @SerializedName("DivisionName")
    public List< SubDivision> subdivision;

    public class Subdivision{

           @SerializedName("SubDivisionId")
           public String SubDivisionId;

           @SerializedName("SubDivisionName")
           public String SubDivisionName;

           @SerializedName("Vehicle")
           public List<Vehicle> SubDivisionName;

           public class Vehicle{


                @SerializedName("Nopol")
                public String nopol;

                @SerializedName("LastUpdate")
                public String LastUpdate;

                @SerializedName("LastSpeed")
                public String LastSpeed;


                @SerializedName("LastLon")
                public String LastLon;


                @SerializedName("Location")
                public String Location;
           }
    }
}

然后你将使用gson将响应转换为此类。 当您收到该对象或响应时将其转换为文本。

List<DivisionResponse> response = gson.fromJson(theonjecttext, new TypeToken<List<DivisionResponse>>() {}.getType());

应创建一个包含所需数据的列表。

确保将gson添加到gradle

的依赖项中
compile 'com.google.code.gson:gson:2.2.4'

此代码特定于您提供的回复。

响应类可以是独立的类而不是内部类。由你决定。

<dependencies>
    <!--  Gson: Java to Json conversion -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.3.1</version>
      <scope>compile</scope>
    </dependency>
</dependencies>