【问题标题】:How to display data from one activity's recyclerView to another activity's recyclerView using parcelable如何使用parcelable将数据从一个活动的recyclerView显示到另一个活动的recyclerView
【发布时间】: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


    【解决方案1】:

    我将假设 PersModelPersDisplayModel 具有相同的 setter 和 getter。

    你需要改变这个:

    GetJobsDataModel.setPerId(arrayList.get(i));
    GetJobsDataModel.setPerCat(perRole);
    GetJobsDataModel.setPerCleanStatus(perCS);
    GetJobsDataModel.setPerCleanCode(perCC);
    

    到这里:

    GetJobsDataModel.setPerId(arrayList.get(i).getPerId());
    GetJobsDataModel.setPerCat(arrayList.get(i).getPerCat());
    GetJobsDataModel.setPerCleanStatus(arrayList.get(i).getPerCleanStatus());
    GetJobsDataModel.setPerCleanCode(arrayList.get(i).getPerCleanCode());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      相关资源
      最近更新 更多