我能否在另一个活动中更新列表视图?

3
我目前有一个选项卡布局,包括两个选项卡,一个选项卡是列表视图,另一个选项卡是创建字符串的选项。这两个选项卡都有自己的活动,因为这样代码更加有结构性,我以后也不必重复自己。
假设我在提供创建字符串的选项卡中,并且我按下更新列表按钮,如何在不使用startActivity()的情况下更新列表视图?如果我使用startActivity(),它会启动List.java,而不是在列表视图选项卡中显示列表,这违反了选项卡视图的目的。换句话说,startActivity()会从列表的选项卡视图中夺取焦点,并将其发送到全屏幕。
谢谢你的时间。
编辑:我想要在不启动新的全屏幕活动并更新选项卡中的活动的情况下更新我的列表视图选项卡。
2个回答

2

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

您可以在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
   }

你能给我一个例子吗?我不太理解。我是初学者,已经学了一年半编程了。 - lands
谢谢,我会试一下的,反正还得改动一些东西。 - lands

0
当我制作我的应用程序时,我也遇到了同样的问题,唯一找到的解决方案是将此标志添加到我的意图中,以便每次转到该选项卡时都会刷新它自己。
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

我希望它有帮助。

@Mayra 我认为你说的是对的,这也是我一直在做的事情。但是你知道如何有效地更新视图吗?因为我已经更新了数据,但是它并没有显示出来,直到我添加了这个标志。你有什么建议吗?我尝试重新加载适配器和使其无效等方法... - mklfarha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接