0

это действительно странно, многие люди уже задавал этот вопрос, но даже не один полезный ответосвежающий ListView фрагмента из MainActivity

У меня есть MainActivity класс

public class MainActivity extends FragmentActivity implements ActionBar.TabListener 

с 3 ActionBar закладках (разделы 1 , 2,3) каждая секция имеет свой собственный фрагмент в пакете

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

в Fragmenta У меня есть ListView с его Список_массивов адаптером.

в MainActivity Я извлекаю некоторые данные и помещаю их в базу данных sqlite.

как только новые данные добавляются в базу данных Я хочу сообщить ListView, что набор данных изменяется и заселить новые данные

это звучит просто, но я действительно получил stucked в этом! Я просто хочу знать, как это сделать, обновить, воссоздать ... что бы то ни было от MainActivity

если кто-нибудь может помочь? спасибо

ответ

0

Проще всего использовать диспетчер локального вещания. developer.android.com/reference/android/support/v4/content/... Вы можете зарегистрировать свой пользовательский интерфейс для получения широковещательной передачи, которую вы можете запустить, когда данные были сохранены в базе данных. Когда пользовательский интерфейс получит это событие, вы можете уведомить свой адаптер, чтобы обновить представление списка

+0

это именно мой вопрос, где я должен уведомить Fragmenta, чтобы освежиться, или уведомить listadapter в том, что для dataSetChaned –

+1

Простейшим является использование локального администратора Broadcast. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html Вы можете зарегистрировать свой пользовательский интерфейс, чтобы получать широковещательную рассылку, которую вы можете запустить, когда данные были сохранены в базе данных. Когда пользовательский интерфейс получит это событие, вы можете уведомить свой адаптер, чтобы обновить представление списка. –

+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. 
    } 

} 
Смежные вопросы