1

作为我最后一个问题的后续:在活动之间传递 Arraylist?使用 Parcelable

我现在正试图通过 Parcelable 传递我的 ArrayList。但是,当它从其他活动中获取时,它会返回 null。我似乎无法弄清楚为什么。我有以下...

结果列表.java

 public class ResultsList extends ArrayList<SearchList> implements Parcelable {

    /**
 * 
 */
private static final long serialVersionUID = -78190146280643L;

 public ResultsList(){

}

public ResultsList(Parcel in){
    readFromParcel(in);
}

@SuppressWarnings({ "rawtypes" })
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
    public ResultsList createFromParcel(Parcel in) {
        return new ResultsList(in);
    }

    public Object[] newArray(int arg0) {
        return null;
    }

};

private void readFromParcel(Parcel in) {
    this.clear();

    //First we have to read the list size
    int size = in.readInt();

    //Reading remember that we wrote first the Name and later the Phone Number.
    //Order is fundamental

    for (int i = 0; i < size; i++) {
        String title = in.readString();
        String Des = in.readString();
        String message = in.readString();
        SearchList c = new SearchList(title,Des,link);
        this.add(c);
    }

}

public int describeContents() {
    return 0;
}

public void writeToParcel(Parcel dest, int flags) {
    int size = this.size();
    //We have to write the list size, we need him recreating the list
    dest.writeInt(size);
    //We decided arbitrarily to write first the Name and later the Phone Number.
    for (int i = 0; i < size; i++) {
        SearchList c = this.get(i);
        dest.writeString(c.gettitle());
        dest.writeString(c.getDescription());
        dest.writeString(c.getmessage());
    }
}
 }

搜索列表.java

 public class SearchList {
private String title;
  private String description;
  private String message;
  public SearchList(String name, String phone, String mail) {
          super();
          this.title = name;
          this.description = phone;
          this.message = mail;
  }
  public String gettitle() {
          return title;
  }
  public void setTitle(String title) {
          this.title = title;
  }
  public String getDescription() {
          return description;
  }
  public void setDescription(String description) {
          this.description = description;
  }
  public String getmessage() {
          return message;
  }
  public void setmessage(String link) {
          this.message = message;
  }
 }

listOfResults在代码中声明为ResultsList listOfResults = new ResultsList();并在前面填写它然后发送...

Intent intent = new Intent(this ,newthing.class);
    Bundle b = new Bundle();
    b.putParcelable("results", listOfResults);
    startActivityForResult(intent,0);

接收...

    Bundle extras = getIntent().getExtras();
    ResultsList results = extras.getParcelable("results");

我想指出我正在通过检查进入 Bundle 的 Arraylist 的 size() 然后它出来来测试这个 null 的东西。它运行良好,结果为空。

4

1 回答 1

0

没有将捆绑包附加到意图!(doh!)被 IRC 上的一位绅士指出!#android-dev

于 2011-04-13T09:30:23.153 回答