2013-08-27 79 views
1

嗨我解析JSON這樣的一些事情。解析JSON到一個可點擊的列表視圖

@Override 
protected void onPostExecute(Void result) { 
    super.onPostExecute(result); 

    StringBuilder builder = new StringBuilder(); 
    for (Shop shop : this.response.shops) { 

     builder.append(String.format("<br>ID: <b>%s</b><br>Shop: <b>%s</b><br>Description: <b>%s</b><br><br>", shop.getId(), shop.getName(), shop.getDescription())); 

    } 

    capitalTextView.setText(Html.fromHtml(builder.toString())); 
    progressDialog.cancel(); 
} 

現在我想解析這個列表。但我無法實現它。任何幫助?可能請示例代碼?

+0

在常規字符串列表中的列表? – Rarw

+0

yap。但與圖像和可點擊 – Kabe

+0

所以你正在試圖做一個'ListView'? – Rarw

回答

0

您需要做的是創建一個ListView,支持Adapter,您可以使用它來顯示此內容。有很多關於如何做到這一點的教程 - here's one

我建議你創建一個Class來表示你在列表中顯示的內容。從我上面看到的它看起來像它的一家商店。然後,您可以將該對象的值設置爲您從JSON獲得的任何值,並將該對象(每個店鋪一個)添加到Adapter。這將允許您在ListView中顯示內容,您可以隨意佈局。

0

有一個really cool library完全符合您的要求,並簡化了過程中的實施。它會爲你做網絡請求,所以你不必擔心AsyncTask或其他什麼,它使用GSON將你自己的模型(類)合併到流程中。

對於instace,說你的類是:

public class Shop { 

@Expose 
@SerializedName("shop_name") 
private String shopName = null; 
public void setShopName(String shopName) { 
    this.shopName = shopName; 
} 
public String getShopName() { 
    return shopName; 
} 

@Expose 
@SerializedName("shop_image") 
private String shopImage = null; 
public void setShopImage(String shopImage) { 
    this.shopImage = shopImage; 
} 
public String getShopImage() { 
    return shopName; 
} 
} 

然後你就可以做一個簡單的請求,變成這樣一個ListView:

public void getShopDetails(final Context context) throws Exception { 
    Ion.with(context, "http://example.com/api/shopitems") 
      .as(new TypeToken<List<Shop>>(){}); 
    .setCallback(new FutureCallback<List<Shop>>() { 
     @Override 
     public void onCompleted(Exception e, List<Shop> shopitems) { 
      //Set your custom adapter 
     } 
    }); 
} 

您的自定義適配器可以很簡單的東西,你根本不需要處理JSON,只需使用你的自定義類的getter和setter即可。我希望這有助於!

+0

感謝它的hepled – Kabe