我觉得这很傻,但是如何在从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;
}
}
答案 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);
}