从JSON中显示布局中的单个对象

时间:2014-07-22 17:52:27

标签: android android-layout android-volley

我觉得这很傻,但是如何在从JSON获取数据之后在Android布局中显示单个对象?我知道如何在列表视图中显示数据,但还没有学会如何显示单个对象。我需要任何类型的适配器吗?

以下是我如何解析Volley的数据(我知道像Jackson和GSON这样的图书馆):

public void parseDeal(JSONObject response) {

    Deal dealItem = new Deal();

    try {

        dealItem.setId(response.getInt("id"));

        dealItem.setHeadline(response.getString("headline"));

        dealItem.setTimeStamp(response.getString("created_at"));

        dealItem.setImge(response.getString("image_url"));

        JSONObject mVendor = response.getJSONObject("vendor");

        dealItem.setVendorPic(mVendor.getString("image_url"));

        // how to adapt to the view?

    } catch (JSONException e) {
        e.printStackTrace();
    }
}

对象中有某些JSON属性可能会返回null,因此我希望能够通过有条件地更改视图中的可见性来处理这些属性。我之前在列表适配器中已经这样做了,但在这种情况下我不确定是否需要适配器:

if (!TextUtils.isEmpty(item.getHeadline())) {
            headlineMsg.setText(item.getHeadline());
            headlineMsg.setVisibility(View.VISIBLE);
        } else {
            // status is empty, remove from view
            headlineMsg.setVisibility(View.GONE);
}

更新

这是我的Deal对象类。

public class Deal {
    private int id;
    private String headline, image, vendorPic, timeStamp;

    public Deal() {
    }

    public Deal(int id, String image, String headline,
            String vendorPic, String timeStamp) {
        super();
        this.id = id;
        this.image = image;
        this.headline = headline;
        this.vendorPic = vendorPic;
        this.timeStamp = timeStamp;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getImge() {
        return image;
    }

    public void setImge(String image) {
        this.image = image;
    }

    public String getHeadline() {
        return headline;
    }

    public void setHeadline(String headline) {
        this.headline = headline;
    }

    public String getVendorPic() {
        return vendorPic;
    }

    public void setVendorPic(String vendorPic) {
        this.vendorPic = vendorPic;
    }

    public String getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(String timeStamp) {
        this.timeStamp = timeStamp;
    }

}

2 个答案:

答案 0 :(得分:1)

为什么不用TextViews(或您喜欢的任何视图)创建片段或活动?

您不需要适配器。然后,您只需使用对象中的值在onCreate(activity)或fragment(onViewCreated)上填充它!

希望它有所帮助!

答案 1 :(得分:1)

我想我可以在这里遵循你的逻辑。您应该努力实现渲染类。这是在加载包含所有这些信息的可视组件时调用的。渲染器应该打开和关闭非空的视图。渲染类是实际代码,它接收您从json中提取的数据,检查它以确保实际存在数据(非空)并将所需视图设置为所需的值。

if (dealItem.getTimeStamp() != null && dealItem.getTimeStamp() != "") { LayoutView.setText(dealItem.getTimeStamp())); LayoutView.setVisibility(View.VISIBLE); } else { // status is empty, remove from view LayoutView.setVisibility(View.GONE); }