为了提高我的Android开发技能,我正在尝试做一个简单的购物应用。如下所示:
正如您从这张图片中可以猜到的,我有一个产品列表,我正在从一个类似于下一个的JSON中解析这些产品:
我已经能够将JSON解析为数组列表,并使用RecyclerView列出主要产品。但是,我希望能够单击一个产品并看到它各自的子产品,这样我就可以将它们添加到购物车中。
我想过通过创建一个新的活动来使用Master-Detail流,但是...如何将特定的"Subproducts“数组传递给Detail活动?(例如,单击“苏打水”并被重定向到新的活动,以查看“可乐”、“胡椒博士”和“雪碧”)。我应该只传递我已经解析过的整个ArrayList吗?或者,有没有一种方法只使用意图传递“子数组”?
我为这个新奇的问题道歉,但我一周半前才开始学习Java和Android开发。
提前感谢!
发布于 2018-12-13 04:47:26
Gson是一个很好的库,可以将JSON转换为java对象,反之亦然。您可以将JSON转换为对象并以这种方式处理数据。例如,您可以让Mango类扩展一个抽象类Juice。有了这些层次关系,做你想做的事情会容易得多。
发布于 2018-12-13 15:44:23
1.That's probably how it works.
Json Object obtained implements Serializable
SerInfo It's mine Example
2.Transmit ArrayList
ArrayList<SerInfo> listObj = new ArrayList<SerInfo>();
SerInfo serInfo1 = new SerInfo(name, website, weibo);
SerInfo serInfo2 = new SerInfo(name, website, weibo);
listObj.add(serInfo1);
listObj.add(serInfo2);
Intent intent = new Intent();
intent.setClass(MainActivity.this, ResultActivity.class);
intent.putExtra("listobj", (Serializable) listObj);
startActivity(intent);
3.Receive ArrayList
ArrayList<SerInfo> listObj = (ArrayList<SerInfo>) getIntent().getSerializableExtra("listobj");
发布于 2018-12-13 17:00:45
1.JSON是解析JSON的最简单方法:
例如:
Gson gson = new Gson();
User user= gson.fromJson(jsonInString, User.class);
2.传递数据有两种方法:1.首先,当你想传递对象时,你可以使用Parcelable,例如:在object公共类中,User实现了Parcelable {
@PrimaryKey
@SerializedName("id")
private int mId;
@SerializedName("phone")
private String mPhone;
@SerializedName("email")
private String mEmail;
public User() {
}
public User(String phone) {
mPhone = phone;
}
public void setPhone(String phone) {
this.mPhone = phone;
}
public void setEmail(String email) {
this.mEmail = email;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.mPhone);
dest.writeString(this.mEmail);
}
protected User(Parcel in) {
mPhone = in.readString();
mEmail = in.readString();
}
public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
}
在第一个练习中:
Intent intent = new Intent(getActivity(), LoadActivity.class);
intent.putExtra(SELECTED_USER, mUser);
startActivity(intent);
在第二个练习中:
Bundle bundle=getIntent().getExtras();
User selectedUser=bundle.getParcelable(SELECTED_USER);
Attention:SELECTED_USER是一个常量字符串。
2.SECOND当你想要传递非对象时:如果E类型是可序列化的,你可以用同样的方式传递一个ArrayList。在第一个练习中:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
第二个活动是:
ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
https://stackoverflow.com/questions/53750928
复制相似问题