Android 如何将一个活动中的自定义数组列表传递给另一个活动

Android 如何将一个活动中的自定义数组列表传递给另一个活动,android,Android,我有一个todolist应用程序,无法将一个活动中的customlist传递给另一个活动。我使用数据包装器,但当我单击“添加”按钮时,程序会给出nullpointerexception 这是AddItem.java okButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { ArrayList<Ent

我有一个todolist应用程序,无法将一个活动中的customlist传递给另一个活动。我使用数据包装器,但当我单击“添加”按钮时,程序会给出nullpointerexception

这是AddItem.java

  okButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

            ArrayList<Entry> itemList = new ArrayList<Entry>();

            task = editText1.getText().toString();
            priorityLevel = spinner.getSelectedItem().toString();
            status = toggleButton.getText().toString();

            int day = datePicker.getDayOfMonth();
            int month = datePicker.getMonth() + 1;
            int year = datePicker.getYear();

            date = day + "/" + month + "/" + year;





            itemList.add(new Entry(task, priorityLevel, date, status));

            Intent okIntent = new Intent();
            okIntent.putExtra("item",new DataWrapper(itemList));
            setResult(Activity.RESULT_OK, okIntent);
            finish();
        }
    });
okButton.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
ArrayList itemList=新建ArrayList();
task=editText1.getText().toString();
priorityLevel=spinner.getSelectedItem().toString();
status=toggleButton.getText().toString();
int day=datePicker.getDayOfMonth();
int month=datePicker.getMonth()+1;
int year=datePicker.getYear();
日期=日+“/”+月+“/”+年;
添加(新条目(任务、优先级、日期、状态);
Intent=newintent();
putExtra(“item”,新的数据包装器(itemList));
设置结果(Activity.RESULT_OK,okinent);
完成();
}
});
和MainActivity.java

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {

        switch (requestCode) {
        case ADD_NOTE:
            Log.w("1", "one");

            DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("item");

            Log.w("2", "two");

            entryList = dw.getEntryList();

            Log.w("3", "three");

            //String extraName = AddItem.code;
            //ArrayList<Entry> list = data.getParcelableArrayListExtra(extraName);
            todoItems.addAll(entryList);

            Log.w("4", "four");

            todoArrayAdapter.notifyDataSetChanged();

            Log.w("5", "five");

            break;
activityresult上受保护的void(int-requestCode、int-resultCode、Intent-data){
if(resultCode==Activity.RESULT\u确定){
开关(请求代码){
案例补充说明:
Log.w(“1”、“1”);
DataWrapper dw=(DataWrapper)getIntent().getSerializableExtra(“项”);
Log.w(“2”、“2”);
entryList=dw.getEntryList();
Log.w(“3”、“3”);
//字符串extraName=AddItem.code;
//ArrayList=data.getParcelableArrayListExtra(外部名称);
todoItems.addAll(entryList);
Log.w(“4”、“4”);
ToDoarayAdapter.notifyDataSetChanged();
Log.w(“5”、“5”);
打破

ArrayList实现可序列化

你可以使用意图

ArrayList<String> mylist = new ArrayList<String>();  
Intent intent = new Intent(ActivityName.this, Second.class);
intent.putStringArrayListExtra("key", mylist);
startActivity(intent);
ArrayList mylist=new ArrayList();
意向意向=新意向(ActivityName.this,Second.class);
intent.putStringArrayListExtra(“键”,mylist);
星触觉(意向);
取回

Intent i = getIntent();  
ArrayList<String> list = i.getStringArrayListExtra("key");
Intent i=getIntent();
ArrayList=i.getStringArrayListExtra(“键”);

实现可包裹界面。

更换

DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("item");


在onActivityResult()中,…

如果条目是可序列化对象,则可以使用intent.putExtra(字符串,可序列化)。检查文档您的条目和数据包装类必须实现Parcelable或serializable(建议使用Parcelable)是的,Entry和DataWrapper类都是可序列化的。ı使用此行okinent.putExtra(“item”,newdatawrapper(itemList));是不是错了?
DataWrapper dw = (DataWrapper) data.getSerializableExtra("item");