java—将自定义对象数组从一个活动传输到另一个活动

0x6upsns  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(268)

我创建了一个名为 CardView .
CardView object 有1个属性: int number 我要传送一份
CardView ObjectsMainActivityMainActivity2 我试着这么做,但当我打印的时候 getNumber 第一个(或任何一个)的 objectreturns 0而不是我在new cardview中设置的数字(int number)。
代码如下: MainActivity onCreate() :

List<CardView> list = new ArrayList<>();
    list.add(new CardView(10));
    list.add(new CardView(11));
    list.add(new CardView(12));
    Intent mIntent = new Intent(this, MainActivity2.class);
    mIntent.putParcelableArrayListExtra("Data", (ArrayList<? extends Parcelable>) list);
    startActivity(mIntent);
``` `MainActivity2 onCreate()` :

List list;
list = getIntent().getExtras().getParcelableArrayList("Data");
Toast.makeText(this, ((CardView)list.get(0)).getNumber()+"", Toast.LENGTH_SHORT).show();

cardview类:

public class CardView implements Parcelable {
int number;
public CardView(int number){
this.number = number;
}

public int getNumber() {
    return number;
}

protected CardView(Parcel in) {
}

public static final Creator<CardView> CREATOR = new Creator<CardView>() {
    @Override
    public CardView createFromParcel(Parcel in) {
        return new CardView(in);
    }

    @Override
    public CardView[] newArray(int size) {
        return new CardView[size];
    }
};

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
}

}

hpcdzsge

hpcdzsge1#

我通过这段视频了解到:https://www.youtube.com/watch?v=wbbsvqsu0is&ab_channel=codinginflow
我应该添加以下代码到 CardView 班级。

protected CardView(Parcel in) {
    number = in.readInt();
}

@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeInt(number);
}
sdnqo3pr

sdnqo3pr2#

试试这个:

protected CardView(Parcel in) {
    number = in.readInt();
}

@Override public void writeToParcel(Parcel parcel, int i) {    
    parcel.writeInt(number); 
}

默认情况下,“未初始化”的值 int 变量将是 0 ,所以 number 是0。使用此构造函数 number 收到包裹。

相关问题