【问题标题】:I am trying to pass an arraylist of objects between two activities,我正在尝试在两个活动之间传递一个对象数组列表,
【发布时间】:2015-03-23 07:26:18
【问题描述】:

我正在尝试在两个活动之间传递一个对象数组列表,

ArrayList<Employee> list1 = new ArrayList<Employee>();

list1 有数据。我正在发送 liske 这个

i.putStringArrayListExtra("CMPNY", list1);

但它显示错误

Intent 类型中的 putStringArrayListExtra(String, ArrayList) 方法不适用于参数 (String, ArrayList)

请任何人帮助如何将列表从一项活动发送到另一项活动

【问题讨论】:

  • 创建数组列表为ArrayList&lt;String&gt; list1 = new ArrayList&lt;String&gt;();
  • 您可以更改问题的标题吗?
  • 员工是类。它有一些数据。我将员工数据添加到 arraylist。我正在尝试将 arraylist 从一个活动发送到另一个活动。
  • 尝试 putParcelableArrayListExtra() 并回答@Hardik
  • List&lt;Employee&gt;放到一个POJO中,然后把那个POJO放到parcelabler.com中,然后把那个POJO和putParcelableExtra放到bundle中,确保Employee也是Parcelable的(把它扔进Parcelabler)

标签: java android


【解决方案1】:

您绝对可以传递对象的 ArrayList,但条件是您的 Employee 类应该是实现 Serializable 或 Parcelable。

class Employee extends Parcelable
{
    // Your member data
    // Your getter setter methods
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    /**
    * Storing the Student data to Parcel object
    **/
    @Override
    public void writeToParcel(Parcel dest, int flags) {

    }
}

查看此链接以获取Parcelable

【讨论】:

    【解决方案2】:

    你可以使用这个技巧

    Intent i = new Intent();
    Bundle bundle=new Bundle();
    ArrayList<Employee> passData = new ArrayList<Employee>();
    bundle.putSerializable("data", passData);
    i.putExtras(bundle);
    

    然后您可以将带有意图的捆绑包发送到另一个活动并使用下面的方法取回那里的数据

    ArrayList<Employee> dataReceived = new ArrayList<Employee>();
    dataReceived = (ArrayList<Employee>)getIntent().getExtras().getSerializable("data");
    

    你也可以使用Parcelable。像上面这样发送 POJO 类比 Parcelable 慢一点。但我已经使用它了。它对我来说很顺利。

    【讨论】:

    • 当我这样使用时...ArrayList list = new ArrayList();捆绑捆绑=新捆绑(); bundle.putSerializable("DATA", list);但是,在另一个活动中,我正在写这样的 ArrayList list1 = new ArrayList(); list1=(ArrayList())bundle.getSerializable("data"); {但是 bundle.getSerializable("data") 没有得到}。请帮我做什么
    • 嗨 setu basak,当我使用 ArrayList list1= new ArrayList(); list1= (ArrayList)getIntent().getExtras().getSerializable("data");我在这里遇到错误 --> ArrayList list1=(ArrayList)getIntent().getExtras().getSerializable("DATA");
    • setu basak 请看我的帖子和回复。
    • 错误是什么??给我看logcat ...我在您的代码中注意到一件事,即您一次设置一个名称或公司名称并将其添加到列表中。为什么??
    • 嗨 Setu basak ,它没有显示任何错误。当我将细节添加到 DetailsEmp 活动中时。它应该添加到 ArrayListin DetailsEmp 活动中。我正在使用 Bundle 将 ArrayList 数据从 DetailsEmp Activity 发送到 MainActivity。但是,MainActivity 获取数据 Null。
    【解决方案3】:

    第 1 步

    你的 Pojo,模型类实现 Serializable 接口

    import java.io.Serializable;
    
    
        public class BatchDropDownPojo  implements Serializable
        {
            private String batchName;
    
            public String getBatchName() {
               return batchName;
           }
    
           public void setBatchName(String batchName) {
            this.batchName = batchName;
           }
    }
    

    第 2 步 Intent i=new Intent(BatchWiseReportActivity.this,SearchViewActivity.class); i.putExtra("batchList",batchDropDownPojoArrayList); 开始活动(一); 第三步

        ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
    
    ArrayList<BatchDropDownPojo> batchDropDownPojoArrayList;
    batchDropDownPojoArrayList = (ArrayList<BatchDropDownPojo>) getIntent().getSerializableExtra("batchList");
    

    【讨论】:

    • 完美的快乐编码
    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2013-05-12
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多