0

我正在为一个 android 应用程序编写代码,如果单击列表的一个元素,它会打开一个新的对象列表,该列表对其唯一,如下所示。

public class A{    
public int id;   
public String name;   
}   

public class B{       
public String name;   
public List<A> a;   
}

我如何将 B 类从一个 ListActivity 打包到另一个?

这将是我对 B 的包裹代码:-

public A(Parcel in){

    name = in.readString();     
    in.readList(a, this.getClass().getClassLoader());
}

@Override
public int describeContents() {
    return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {

    dest.writeString(name);
    dest.writeList(a);

}

public static final Parcelable.Creator<B> CREATOR = new Creator<B>() {

    @Override
    public B[] newArray(int size) {

        return new B[size];
    }

    @Override
    public B createFromParcel(Parcel source) {
        return new B(source);
    }
};

和我的 A 包裹代码:-

public A(){};

public A(Parcel in){

    id = in.readLong();
    name = in.readString(); 

}

@Override
public int describeContents() {
    return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {

    dest.writeLong(id);
    dest.writeString(name);



}

public static final Parcelable.Creator<A> CREATOR = new Creator<A>() {

    @Override
    public A[] newArray(int size) {

        return new A[size];
    }

    @Override
    public A createFromParcel(Parcel source) {

        return new A(source);
    }
};

这些不起作用并导致我的应用程序在尝试打开新列表活动时崩溃。

新列表活动代码:-

    private B b; 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.MainList);
    Bundle bun = getIntent().getExtras();
    b = bun.getParcelable(".modle.B");


    ArrayAdapter<A> adapter =new ArrayAdapter<A>     (this,android.R.layout.simple_list_item_1,b.a);
    setListAdapter(adapter);
}
4

0 回答 0