我可以在一个活动中更新列表视图而我在另一个活动中吗?
Posted
技术标签:
【中文标题】我可以在一个活动中更新列表视图而我在另一个活动中吗?【英文标题】: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() 从列表的选项卡视图中窃取焦点,并将其发送到全屏。
感谢您的宝贵时间。
编辑:我想更新列表视图选项卡中的活动,而不启动进入全屏的新活动,并且不更新选项卡中的活动。
【问题讨论】:
【参考方案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 我认为,你说的是真的,这就是我正在做的,但是你如何让你的观点得到有效更新,因为我已经更新了数据,但它不会'不出现,直到我添加了这个标志你有什么建议吗?我尝试重新加载我的适配器,并使其无效等...以上是关于我可以在一个活动中更新列表视图而我在另一个活动中吗?的主要内容,如果未能解决你的问题,请参考以下文章