从 ListView 开始 activity,然后是下一个 activity

start activity from ListView and then next activity

所以我有一个练习列表视图,当我单击一个项目时,我转到 Detail.java activity 并显示练习的信息,但我在底部旁边有一个按钮转到下一个 exercise.i 如果不创建许多 Detail 活动,我不知道如何做到这一点。

您可以使用包含您想要的参数的包开始详细信息 activity,在本例中为下一个练习的 ID。

Intent mIntent = new Intent(this, Detail.class);
Bundle mBundle = new Bundle();
mBundle.putInt("id", theIdOfNextExercise);
mIntent.putExtras(mBundle);
startActivity(mIntent);

然后,在启动的Detail activity中,您可以通过以下方式读取参数:

int exerciseId = getIntent().getExtras().getInt("id", 0);

然后在您的详细信息中显示与该练习相关的详细信息 Activity。 我已将默认值设置为 0,因此如果 exerciseId > 0,您就有了要显示的练习的 ID。

Bundles have "get" and "put" methods for all primitive types, Serializables and Parcelables. The use of an integer with putInt/getInt is just an example.

你可以使用 bundle 来保存你的练习的 id,而不是将它捕获到你调用的 activity...我建议你使用 fragment,它更难,但它最聪明,更用户友好

据我从你提供的信息中了解到: 您可以使用对象应实现的可序列化和可打包接口在活动之间传递对象

Using Serializable and Parcelable instructions

The next step passing data from your main activity to the detailed activity

使用序列化

ArrayList<ModelClass> yourModelList= new ArrayList<Model>();
intent.putExtra("modelList", yourModelList);

Retrieve data

ArrayList<ModelClass> modelList= (ArrayList<ModelClass>).getIntent().getSerializableExtra("modelList");

使用 parcelable

Intent intent = new Intent(this,Detail.class);
intent.putParcelableArrayListExtra("modelList", modelList);
startActivity(intent);

Retrieve Data in your Detail.java activity

ArrayList<ModelClass> modelList= getIntent().getParcelableArrayList("modelList");

此外,我强烈建议您使用 Fragment,因为一旦您开始将数组列表从一个 activity 迭代到另一个保存 ID 和其他东西,它就会变得混乱 希望这会有所帮助 ;)