1

嗨,我正在解析 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();
}

现在我想把它解析成一个列表。但我无法实现它。有什么帮助吗?请问可以是示例代码吗?

4

2 回答 2

0

您需要做的是创建一个可用于显示此内容的ListView支持。Adapter有很多关于如何做到这一点的教程 -这里有一个.

我建议您创建一个Class来表示您在列表中显示的内容。从上面我可以看到它看起来像是一家商店。然后,您将该对象的值设置为您从 中获得的任何值,JSON并将该对象(每个商店一个对象)添加到Adapter. 然后,这将允许您以ListView您可以随意布局的方式显示内容。

于 2013-08-27T13:02:48.647 回答
0

有一个非常酷的库可以完全满足您的需求,并简化了过程中的实现。它会为您完成网络请求,因此您不必担心 AsyncTask 或其他任何事情,它使用 GSON 将您自己的模型(类)合并到流程中。

例如,假设您的课程是:

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。我希望这会有所帮助!

于 2013-08-27T17:28:26.140 回答