传递ArrayList使用Intent

时间:2017-12-10 10:03:17

标签: java android android-intent arraylist

我的第一项活动:

btnAddSt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Student st = new Student();
            st.setStdId(edtStId.getText().toString());
            st.setStdName(edtStName.getText().toString());
            st.setStdDoB(edtStDoB.getText().toString());
            st.setStdEmail(edtStEmail.getText().toString());
            st.setStdPhone(edtStPhone.getText().toString());
            st.setStdAddress(edtStAddress.getText().toString());
            st.setStdBatch(edtStBatch.getText().toString());
            students.add(st);

        }
    });

添加学生的功能:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_student_manage);
    Anhxa();
    Intent intent = getIntent();
    if (intent.getSerializableExtra("students")!=null) {
        students = (ArrayList<Student>) intent.getSerializableExtra("students");
        stAdt = new StudentAdapter(this, R.layout.student_line, students);
        lstvSt.setAdapter(stAdt);
        stAdt.notifyDataSetChanged();
    }else {Toast.makeText(this,"Null",Toast.LENGTH_LONG).show();}
}

将学生添加到ArrayList后,我想通过btnResetSt传递它使用Intent。

这是第二项活动

@GET("user/images")
Call<UserImage> getUserImage();

我使用Toast.makeText检查 intent.getSerializableExtra 的结果,它确实是空的,所以我无法在列表视图的第二个活动中显示我的列表。谁能说我错了?

1 个答案:

答案 0 :(得分:0)

你得错了。您需要使用密钥StudentList获得额外费用。

所以一定是:

students = (ArrayList<Student>) intent.getSerializableExtra("StudentList");

要防止出现同样的错误,请在目标Activity中使用静态密钥。像这样:

public class SecondActivity extends Activity {
  public static final String STUDENT_LIST_EXTRA = "StudentList";

  ...
}

因此,您可以使用以下内容来增加额外内容:

intent.putExtra(SecondActivity.STUDENT_LIST_EXTRA, students);

并使用以下内容获得额外的收益:

students = (ArrayList<Student>) intent.getSerializableExtra(STUDENT_LIST_EXTRA);