我想将ArrayList传递给新活动,在新活动中,我将使用ArrayAdapter加载列表。

但是我无法将对象转移到新活动中,因此我在新活动中得到的是空值。

我读过我需要实现对Person类的序列化...
这是唯一的方法吗?

这是我的代码:

AsyncTask onPostExecute我正在获取数组。

@Override
    protected void onPostExecute(ArrayList<Person> personArrayList){

        Intent intent = new Intent(activity, ResultsActivity.class);
        intent.putExtra("personArrayList",personArrayList);
        activity.startActivity(intent);

    }


使用putExtra发送。

这是活动,它假设要接收数组。

public class ResultsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_results);
        Intent intent = getIntent();
        ArrayList<Person> personArrayList = (ArrayList<Person>) intent.getSerializableExtra("personArrayList");

        PeopleAdapter adapter = new PeopleAdapter(this, personArrayList);

        // Find the {@link ListView} object in the view hierarchy of the {@link Activity}.
        // There should be a {@link ListView} with the view ID called list, which is declared in the
        // activity_results.xml layout file.

        ListView listView = (ListView) findViewById(R.id.list);


        // Make the {@link ListView} use the {@link WordAdapter} we created above, so that the
        // {@link ListView} will display list items for each {@link Person} in the list.
        listView.setAdapter(adapter);
    }
}


因此,在接收端,ArrayList为空。有想法吗?

最佳答案

通过使类Person实现Parcelable接口来传输此ArrayList。一旦完成,您只需编写:

@Override
protected void onPostExecute(ArrayList<Person> personArrayList){

    Intent intent = new Intent(activity, ResultsActivity.class);
    intent.putParcelableArrayListExtra("personArrayList",personArrayList);
    activity.startActivity(intent);

}


在您的ResultsActivity类中,您可以通过编写intent.getParcelableArrayListExtra("personArrayList")来获得此数组

希望这可以帮助。

08-16 16:18