【问题标题】:Passing a list of objects to a PagerActivity将对象列表传递给 PagerActivity
【发布时间】:2015-06-21 02:42:41
【问题描述】:

我有一个列表,其中包含从列表中获取的文章,并希望在 PagerActivity 中显示所选文章,以便用户在阅读完之前和之后轻松地翻到文章。

在 iOS 中,我可以将带有文章对象的列表(或引用)传递给 PagerActivity。然而,在 Android 中,调用 Intent 不允许传递列表。那么最好的方法是什么?我是否需要在下一个 Activity 中重新加载数组,然后将位置作为参数传递给 Intent?

(重新加载列表会很昂贵,但如果数据库在加载后没有更改,则应该可以工作,否则顺序可能会不同,并且可能会显示错误的项目)。

【问题讨论】:

    标签: android android-activity android-pageradapter


    【解决方案1】:

    在安卓中

    使用ParecleObject如果你有Custom Object ArrayList,如果你有简单的String ArrayList然后直接传入Intent

    如果你有 Simple String ArrayList 然后参考下面

    Passing ArrayList of string arrays from one activity to another in android

    如果您有Custom Object ArrayList,请参考以下内容

    How to pass ArrayList<CustomeObject> from one activity to another?

    Passing arraylist of objects between activities

    【讨论】:

      【解决方案2】:

      在此处考虑您的部门类型列表:

      public class Department implements Parcelable {
          int department_id;
          String title;
      
          public Department() {
              this.department_id = 0;
              this.title = null;
          }
      
          public Department(int department_id, String title) {
              this.department_id = department_id;
              this.title = title;
          }
      
          public int getDepartmentId() {
              return department_id;
          }
      
          public void setDepartmentId(int department_id) {
              this.department_id = department_id;
          }
      
          public String getTitle() {
              return title;
          }
      
          public void setTitle(String title) {
              this.title = title;
          }
      
          @Override
          public int describeContents() {
              return 0;
          }
      
          @Override
          public void writeToParcel(Parcel parcel, int flag) {
              parcel.writeInt(department_id);
              parcel.writeString(title);
          }
      
          public static final Creator<Department> CREATOR = new Creator<Department>(){
      
              @Override
              public Department createFromParcel(Parcel parcel) {
                  Department department = new Department();
                  department.setDepartmentId(parcel.readInt());
                  department.setTitle(parcel.readString());
                  return department;
              }
      
              @Override
              public Department[] newArray(int size) {
      
                  return new Department[size];
              }
      
          };
      }
      
      List<Department> departments = new ArrayList<>();
      

      现在您只需像这样将此列表放入 Intent Bundle 中

      bundle.putParcelableArrayList("Departments_KEY", departments);
      

      并像这样在您的孩子活动中接收列表

      List<Department> departments = getIntent() or getArguments().getParcelable("Departments_KEY");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-05
        • 2011-08-17
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        • 2020-12-01
        • 1970-01-01
        相关资源
        最近更新 更多