代码之家  ›  专栏  ›  技术社区  ›  Hatim Setti

从ListView启动活动,然后启动下一个活动

  •  2
  • Hatim Setti  · 技术社区  · 7 年前

    因此,我有一个练习列表视图,当我单击一个项目时,我会转到详细信息。java activity和我显示了练习的信息,但我在底部有一个按钮,可以转到下一个练习。如果不创建许多详细的活动,我没有任何想法去做。

    3 回复  |  直到 7 年前
        1
  •  0
  •   Community CDub    4 年前

    据我所知,从你提供的信息来看: 您可以使用对象应该实现的可序列化和可打包接口在活动之间传递对象

    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);
    

    检索详细信息中的数据。java活动

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

    此外,我强烈建议您使用Fragment,因为一旦您开始在arraylist中从一个活动迭代到另一个保存ID和其他内容,它就会变得很混乱 希望这有帮助;)

        2
  •  0
  •   user8037477 user8037477    7 年前

    您可以使用bundle保存练习的id,然后将其捕获到您调用的活动中。。。我建议您使用fragment,虽然它更难,但它最聪明,更友好

        3
  •  0
  •   jeprubio    7 年前

    您可以使用一个包含所需参数的捆绑包启动“详细信息”活动,在本例中是下一个练习的id。

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

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

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

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

    捆绑包对所有基本类型、序列化文件和包裹都有“get”和“put”方法。将整数与putInt/getInt一起使用只是一个示例。