【发布时间】:2021-06-19 20:57:48
【问题描述】:
我一直在尝试使用 parcelable 将模型 Arraylist 从一个活动(recyclerview 中显示的数据)显示到另一个活动的 recyclerView。 我已经设法实现了可打包部分。我想知道,如何在第二个活动的 recyclerView 中显示它。
FirstActivity.java
//Adding data to 1st activitiy's recyclerview
ArrayList<PersModel> persModels = new ArrayList<PersModel>();
private void addPers(int perID, String perRole, int perCS, int perCC) {
PersModel PersDataModel = new PersModel();
PersDataModel.setPerId(perID);
PersDataModel.setPerCat(perRole);
PersDataModel.setPerCleanStatus(perCS);
PersDataModel.setPerCleanCode(perCC);
persModels.add(PersDataModel);
recyclerViewAdapter.updateModels(persModels);
}
//Starting next activity
btnReview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AddPersonActivity.this, ReviewActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("mylist", persModels);
intent.putExtras(bundle);
startActivity(intent);
}
});
SecondActivity.java
//Data passed from FirstActivity.java
Bundle bundle = getIntent().getExtras();
ArrayList<PersModel> arraylist = bundle.getParcelableArrayList("mylist");
//Add data to new model..THIS IS WRONG
private void displayPersList( ArrayList arrayList){
List<PersDisplayModel> newModels = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
PersDisplayModel GetJobsDataModel = new PersDisplayModel();
try {
GetJobsDataModel.setPerId(arrayList.get());
GetJobsDataModel.setPerCat(perRole);
GetJobsDataModel.setPerCleanStatus(perCS);
GetJobsDataModel.setPerCleanCode(perCC);
newModels.add(GetJobsDataModel);
} catch (JSONException e) {
e.printStackTrace();
}
}
if (array.length() != 0) {
recyclerViewAdapter.updateModels(newModels);
}
}
PersModel.java
public class PersModel implements Parcelable {
int perId;
int perCleanStatus;
int perCleanCode;
String perCat;
public PersModel() {
}
public int getPerId() {
return perId;
}
public void setPerId(int perId) {
this.perId = perId;
}
public int getPerCleanStatus() {
return perCleanStatus;
}
public void setPerCleanStatus(int perCleanStatus) {
this.perCleanStatus = perCleanStatus;
}
public int getPerCleanCode() {
return perCleanCode;
}
public void setPerCleanCode(int perCleanCode) {
this.perCleanCode = perCleanCode;
}
public String getPerCat() {
return perCat;
}
public void setPerCat(String perCat) {
this.perCat = perCat;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(perId);
dest.writeInt(perCleanStatus);
dest.writeInt(perCleanCode);
dest.writeString(perCat);
}
public PersModel(Parcel in) {
perId = in.readInt();
perCleanStatus = in.readInt();
perCleanCode = in.readInt();
perCat = in.readString();
}
public static final Creator<PersModel> CREATOR = new Creator<PersModel>() {
@Override
public PersModel createFromParcel(Parcel in) {
return new PersModel(in);
}
@Override
public PersModel[] newArray(int size) {
return new PersModel[size];
}
};
}
【问题讨论】:
标签: android parcelable