代码之家  ›  专栏  ›  技术社区  ›  Chivaa

从不同的活动更新ListAdapter

  •  1
  • Chivaa  · 技术社区  · 12 年前

    我正在做我的业余项目,以了解更多有关android编程和东西的信息。所以我最近遇到了一个简单的问题,但找不到解决方法。

    我的项目目前有2项活动 [MainActivity] , [CommentActivity] .

    在MainActivity中,我有一个列表适配器 (cusAdapter) 将从数据库中获取所有内容并将其显示在列表视图中。那里一切都很好。它将根据帖子id获取某篇帖子的所有评论和总评论。在同一个MainActivity中,我有一个评论按钮和一个onclick监听器,单击该按钮后,用户将进入下一个活动[CommentActivity],并使用另一个自定义适配器加载所有评论和数据。我还有一个总注释TextView,它将显示json获取的总注释,并将其显示在我的列表视图中。

    当用户在CommentActivity上发布评论时,它将通过AsyncTask保存到数据库中。

    现在的问题是,当我按下后退按钮并从CommentActivity返回到MainActivity时,我使用带有标志的intent(intent.flag_activity_reorder_to_front)。因此,当按下后退按钮时,它将不再重新加载MainActivity。此外,它永远不会更新MainActivity中的总注释。我想做的是,当CommentActivity上按下后退按钮时,我希望它刷新/重新加载MainActivity中的ListAdapter,以从数据库中获取最新数据。

    此外,我不想重新加载整个MainActivity,我只想在不重新加载整个activity的情况下更新视图。

    我相信一定有一些简单的方法可以做到这一点。如果你们需要帮助我,我可以发布代码。

    非常感谢。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Junior Buckeridge    12 年前

    是的,有一个简单的方法。 使用以下方法开始第二项活动:

    • 启动结果活动(意图,结果_CODE)
    • 在提交数据库更改后的第二个活动中使用setResult(RESULT_OK)
    • 重写第一个活动中的onActivityResult(),以检查第二个活动何时正确返回
    • 根据需要更新第一个适配器。

    希望有帮助。

        2
  •  1
  •   Michael    12 年前

    在您的MainActivity中,您可以在Resume中查看数据是否已更改,因为当您从CommentActivity返回该数据时,将调用该数据。

    如果数据已更改,则在适配器上调用notifyDataSetChanged()将用新数据重新加载视图