【问题标题】:Can I update a list view in one activity while im in another activity?我可以在一个活动中更新列表视图而我在另一个活动中吗?
【发布时间】:2011-04-21 01:29:38
【问题描述】:

我目前有一个带有 2 个选项卡的选项卡布局,一个带有列表视图的选项卡和一个带有选项制作字符串的选项卡,因此我可以将它们添加到列表视图中。这两个选项卡都有自己的活动,因为这使代码更加结构化,我以后不必重复自己。

假设我在提供我创建字符串的选项卡中,我按下更新列表按钮,如何在没有 startActivity() 的情况下更新列表视图?如果我使用 startActivity(),它会启动 List.java,而不是在列表视图选项卡中显示列表,而是全屏显示,这违背了选项卡视图的目的。换句话说,startActivity() 从列表的选项卡视图中窃取焦点,并将其发送到全屏。

感谢您的宝贵时间。

编辑:我想更新列表视图选项卡中的活动,而不启动进入全屏的新活动,并且不更新选项卡中的活动。

【问题讨论】:

    标签: android listview android-activity tabs android-intent


    【解决方案1】:

    一种解决方案是将数据模型与视图(活动)分开,这通常是一种很好的做法,但在这种情况下,允许您的两个选项卡与同一个模型进行交互。

    您可以在 Application 类中提供对数据模型的访问。然后,当对您的列表活动调用 onResume 时,您可以根据当前数据更新视图。

    编辑:

    public class MyApplication extends Application {
       private List<MyObject> myData;
    
       public List<MyObject> getMyData() {
         return myData; 
       }
    
       public void setMyData(List<MyObject> mydata) {
         this.myData = myData;
       }
    }
    

    在您的清单中,您需要添加应用程序标记以指定它应该使用 MyApplication 作为应用程序类。

    然后,在你的活动中:

       public void onResume() {
          MyApplication app = (MyApplication) getApplication();
          List<MyData> data = app.getMyData();
          // update  my view with the data
       }
    

    【讨论】:

    • 你能举个例子吗?我不确定我是否完全明白。我对编程有点陌生,已经从事了 1 1/2 年。
    • 谢谢,我试试看,无论如何都得改一下。
    【解决方案2】:

    我在制作应用程序时遇到了同样的问题,我找到的唯一解决方案是将此标志添加到我的意图中,这样每次我转到选项卡时它都会自行刷新

    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    

    希望对你有帮助。

    【讨论】:

    • @Mayra 我认为,你说的是真的,这就是我正在做的,但是你如何让你的观点得到有效更新,因为我已经更新了数据,但它不会'不出现,直到我添加了这个标志你有什么建议吗?我尝试重新加载我的适配器,并使其无效等...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多