2014-12-08 72 views
0

我是Android编程新手。我有一个从多级ExpandableListview json数据的类。我想将DivisionName值显示为列表的第一行(父),将SubDivisionName值放入第二行(子),并将所有车辆值显示到第三行(孙)。所以,这是JSON数据Android将Json转换为ArrayList多级可扩展列表视图

[ 
{ 
    "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列出。这是多级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

回答

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> 
+0

我是Android项目Eclipse用户。我是gson的新人。如果我使用maven项目和gson 2.3,它工作吗? – user248012 2014-12-08 06:40:25

+0

是的,它应该。看到我更新的答案。您应该转换为Android Studio。你会更有生产力:) – 2014-12-11 21:10:10