0

我有一个静态类,它扩展了 android.app.Application ( HireApplication ),它正在做很多我的后台工作。我在这里创建 AsyncTasks,我存储了我的应用程序使用的最大数据对象。我在 Application 类中编写此代码,以便我可以在电话和平板电脑的单独活动之间重用它。

这感觉像是布局我的应用程序的正确方法,但现在我遇到了问题。AsyncTask 已完成,需要在 Fragment ( ListFragment ) 内的 ArrayAdapter 上运行 notifyDataSetChanged。

这是我的解决方案:

列表片段:

public void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    myListAdapter = new MyListAdapter(getActivity(), HireApplication.myList);
    HireApplication.myListAdapter = myListAdapter; // Tell the application where the ListView is so that it can notifyDataSetChanged
}

招聘申请:

public static ArrayAdapter<BikeStation> stationListAdapter = null;

private static void asyncTaskCompleteCallback() {
    {...}
    myListAdapter.notifyDataSetChanged();
}

现在,这行得通……但感觉不对。我正在向应用程序提供对 UI 元素的引用,这听起来有点紧密耦合,但我不知道有更好的方法来做到这一点。

有没有更好的方法让我的应用程序通知我的 ArrayAdapter 或 Fragment 它应该采取一些措施来使用新数据更新 UI?

干杯。

4

1 回答 1

0

整个事情在我看来是错误的......如果您使用的是片段和适配器,您应该使用 LoadManager 而不是 AsyncTasks。此外,将所有内容都放在您的应用程序上似乎是您想要解决的问题的糟糕解决方案;这将导致可能的内存泄漏并且感觉不对。

于 2012-11-08T00:47:25.623 回答