从 ListView 开始活动,然后是下一个活动

Posted

技术标签:

【中文标题】从 ListView 开始活动,然后是下一个活动【英文标题】:start activity from ListView and then next activity 【发布时间】:2018-06-11 03:04:08 【问题描述】:

所以我有一个练习列表视图,当我单击一个项目时,我会转到 Detail.java 活动并显示练习的信息,但我在底部有一个按钮可以转到下一个练习。我没有如果不创建许多 Detail 活动,就没有任何想法。

【问题讨论】:

Wat about 片段而不是活动使用片段来替换内容。 【参考方案1】:

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

Using Serializable and Parcelable instructions

下一步将数据从主要活动传递到详细活动

使用可序列化

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

检索数据

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

使用parcelable

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

在 Detail.java 活动中检索数据

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

除了我强烈推荐你使用 Fragment,因为一旦你开始遍历你的数组列表从一个活动到另一个保存 ID 和其他东西,它就会变得混乱 希望这会有所帮助;)

【讨论】:

谢谢它有效,但 getParcelableExtra("modelList") 不起作用我使用 getStringArrayListExtra.. 我已经编辑了我的答案尝试使用 .putParcelableArrayListExtra 和 getParcelableArrayListExtra【参考方案2】:

你可以使用 bundle 来保存你的运动的 id,而不是将它捕捉到你调用的活动中......我建议你使用片段,它更难,但它最聪明,更用户友好

【讨论】:

【参考方案3】:

您可以使用带有所需参数的捆绑包开始详细活动,在本示例中为下一个练习的 id。

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

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

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

然后在您的详细活动中显示与该练习相关的详细信息。 我已经将默认值设置为 0,所以如果 exerciseId > 0 你有练习的 id 来显示。

Bundle 对所有原始类型、Serializable 和 Parcelable 都有“get”和“put”方法。在 putInt/getInt 中使用整数只是一个示例。

【讨论】:

以上是关于从 ListView 开始活动,然后是下一个活动的主要内容,如果未能解决你的问题,请参考以下文章

ListView 单击然后使用自动数据转到其他活动

按下小部件ListView项目时Android开始活动

从列表中选择项目后如何开始活动?

将 listView 数据从一个活动发送到另一个活动

从 Activity 返回时如何获取最后一个 ListView 状态

开始新活动后,ListView 会减少