【问题标题】:Android listview item edit operationAndroid listview项编辑操作
【发布时间】:2014-11-27 14:57:56
【问题描述】:

我是开发 Android 应用程序的新手。我有一个具有 ListView 的 MainActivity。Listview 上的数据保存在一个 Arraylist 中。(我没有任何数据库)。Listview 项目有 4 个字段,例如课程代码、课程标题、课程级别,coursedescription。当我单击 Listview 上的一个项目时,将启动一个新活动 (ShowDetailActivity) 以查看详细信息。当我单击编辑选项菜单项时,将启动一个新活动(EditCourseDetailActivity),用户当然可以编辑详细信息。

EditCourseDetailActivity上特定课程的编辑细节必须先传到ShowDetailActivity再传到MainActivity

我不知道我能解释一下吗?

我该如何处理这种情况请帮助我!!!!感谢您的高级评论

MainActivity ---> ShowDetailActivity ---> EditCourseDetailActivity ---- | | MainActivity

【问题讨论】:

    标签: android android-intent android-activity android-fragments optionmenu


    【解决方案1】:

    对于ListView(MainActivity),你可以做setOnItemClickListener。例如:

    MainActivity.java

    ListView list = (ListView) findViewById(R.id.yourlistview);
    list.setOnItemClickListener(new AdapterView.onItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
          // use position to find your values
          // to go to ShowDetailsActivity, you have to use Intent
          Intent detailScreen = new Intent(getApplicationContext(), ShowDetailActivity.class);
          detailScreen.putExtra("position", position); // pass value if needed
          detailScreen.putExtra("para2", para2);
          startActivity(detailScreen);
       } 
    });
    

    DetailScreen.java

    这是您从 MainActivity 接收的方式。

    Intent i = getIntent();
    int position = i.getIntExtra("position", 0);
    

    然后当点击编辑按钮时,使用意图转到下一个活动(EditCourseDetails)。

    【讨论】:

    • 我在哪里可以保存职位信息?我使用动态片段,我有 CourseDataFragment.java。我可以在 CourseDataFragment.java 上的 onActivityCreated 方法中获取位置信息。如何使用这些信息。ShowCourseActivity 和 EditCourseActivity(两者)都使用 CourseDataFragment.java
    • 另外,如何将位置信息从 EditCourseActivity 类传递给 MainActivity 类。为了做到这一点,我使用了 MainActivity 实现的接口。在 EditCourseActivity 上,我创建了像 MyInterface interface= 这样的接口引用(MyInterface)MainActivity.class interface.updateValue(position) 。但是没有用
    • 我不确定 CourseDataFragment.java 是关于什么的。基本上,位置告诉您您在 ListView 上单击的项目位置。根据位置值,您可以从 ArrayList 中检索您的项目详细信息。您可以使用相同的 Intent 方法继续将位置值从 ShowDetailsActivity 传递给 EditCourseDetailActivity。因此,当您编辑该值时,它应该在您的 ArrayList 上发生更改,因此,当您返回 MainActivity 时,您的 ListView 将显示新值。
    • 这就是我想要的。太棒了
    【解决方案2】:

    看看这个topic。和你的情况差不多。

    在您的情况下,想法是通过 Intent 将数据发送到您的不同活动。修改后的数据将由同一进程发送回活动。

    我相信你在 ArrayList 中的对象一定是可序列化的。

    您将在这些链接中找到解释:

    P.S.:使用 startActivityForResult 和 onActivityResult 来获取 tiago7 解释的 Intent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-05
      • 2015-02-05
      • 2019-05-11
      • 1970-01-01
      • 2014-06-24
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多