0

片段的Lis​​tView它真的很奇怪,很多人已經問過這個問題,但甚至沒有一個有用的答案刷新由MainActivity

我有一個MainActivity類別

public class MainActivity extends FragmentActivity implements ActionBar.TabListener 

3個動作條選項卡(第1 ,2,3)每個部分在包中都有自己的片段

public class FragmentA extends Fragment 
public class FragmentB extends Fragment 
public class FragmentC extends Fragment 

在FragmentA中我有一個listView和它的ArrayList適配器。

我在MainActivity中獲取一些數據並將其放入sqlite數據庫中。

,一旦新數據添加到數據庫中,我想通知列表視圖,該數據集被改變和填充新的數據

這聽起來容易,但我已經開始真正在stucked! 我只是想知道如何做到這一點刷新,重建,重新創建...從MainActivity發生什麼事

如果有人可以幫忙嗎?謝謝

回答

0

最簡單的是使用本地廣播管理器。 developer.android.com/reference/android/support/v4/content/...您可以註冊您的用戶界面以接收數據已保存到數據庫中時可以觸發的廣播。當UI收到此事件時,您可以通知您的適配器刷新活動中的列表視圖

+0

這正是我的問題,我應該在哪裏通知FragmentA得到刷新,或在通知listadapter for dataSetChaned –

+1

最簡單的就是使用本地廣播管理器。 http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html 您可以註冊您的用戶界面以接收數據已保存到數據庫中時可以觸發的廣播。當UI收到此事件時,您可以通知您的適配器刷新列表視圖 –

+0

您有足夠的信譽將其作爲評論發佈。所以這不是答案。這應該是評論。 – Piyush

0

this.fragment.adapter.notifyDataSetChanged(); 
0

呵呵。

這是可憐的主意嗎?

public interface INotifyDataChange { 
    public void notify(Object dataChanged); // Object stand for whatever you want. :"> 
} 

您MainActivity

MainActivity { 
    public static INotifyDataChange notifier; 
    public void inSomeMethod() { 
     // do input data. 
     if (notifier != null) { 
      notifier.notify(dataWillBeAttached); 
     } 
    } 
} 

您的片段:

FragmentA or B, or C implements INotifyDataChange { 
    onCreateView() { 
     MainActivity.notifier = this; 
    } 

    @Override 
    public void notify(Object data) { 
     Toast.make(..., "I've changed data " + data.toString(), ...).show(); 
     yourListView.notifyDataSetChanged(); // or anything like this. 
    } 

}