为了提高我的Android开发人员技能,我正在尝试制作一个简单的购物应用程序。像这样:
您可以从这张图片中猜出,我有一个产品列表,我正在从JSON解析产品,如下一个:
我已经能够将JSON解析为数组列表,并使用RecyclerView列出主要产品。但是,我希望能够单击某个产品并查看其相应的子产品,以便将它们添加到购物车中。
我曾考虑过通过创建新的Activity使用主从流程,但是...如何将特定的“子产品”数组传递给Detail Activity? (例如,单击“苏打”并重定向到新活动,以查看“可乐”,“胡椒博士”和“雪碧”)。我应该只传递已经解析的整个ArrayList吗?还是有一种方法只能使用Intent传递“子数组”?
我为这个新问题表示歉意,但是一周半前我才刚刚开始学习Java和Android开发。
谢谢!
答案 0 :(得分:1)
Gson是一个很好的库,可以将JSON转换为Java对象,反之亦然。您可以将JSON转换为对象并以这种方式使用数据。例如,您将让Mango类扩展一个抽象类Juice。有了这些层次结构的关系,您将可以轻松地完成您想做的事情。
答案 1 :(得分:0)
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");
答案 2 :(得分:0)
1.Gson是解析JSON的最简单方法:
例如:
Gson gson = new Gson();
User user= gson.fromJson(jsonInString, User.class);
2。您有2种传递数据的方式: 1.首先当您想传递对象时可以使用Parcelable 例如: 在对象中 公共类用户实现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);
注意:SELECTED_USER是一个常量字符串。
2.SECOND当您想传递非对象时: 如果E类型是Serializable,则可以以相同的方式传递ArrayList。 在第一次活动中:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
第二个活动:
ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");