2016-12-26 3 views
0

My 4 Fragmente in ViewPager haben einen gemeinsamen Knopf von Elternaktivität, die ein Dialogfeld geöffnet und sollte Listviews in diesen 4 Fragmente aufzufrischen. Ich habe versucht, statische Adapter zu verwenden, aber das hat nicht funktioniert. Jetzt versuche ich Broadcast zu verwenden, aber immer noch sehe ich meinen Adapter nicht von außen Broadcast-Empfänger. Bitte helfen Sie.Refresh-Fragment von ViewPager von Mutter Aktivität

+0

Teilen Sie einen Code –

+0

Teilen Sie PagerAdapter Klassencode – MobDev

Antwort

2

ich gleiche Forderung hatte ich folgende haben: - 1. Verlängern pagerAdapter mit FragmentStatePagerAdapter 2. unter Implementieren in Ihrer pagerAdapter Klasse

@Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 
  1. dann, wann immer Sie refresh einfach anrufen -

notifyDataSetChanged();

auf Adapter.

Sie können Ihren Adapter von Ihrem viewpager erhalten wie folgt:

viewPager.getAdapter() notifyDataSetChanged();.

Hier ist Viewpager Referenz meines Viewpager.

+0

Ich habe diesen Weg versucht, aber die Anwendung bekommt eine Verzögerung und schaltet sich bei der Aktualisierung aus. :/ – Tomek

+0

Ich kann dir nur helfen, wenn du deinen Code teilen kannst. – MobDev

+0

Ahh Ich habe getItemPosition nicht richtig geschrieben, es funktioniert super, danke: D! – Tomek

0

fügen Sie Ihre 4 Listen zu einer Karte mit separatem Schlüssel (1,2,3,4) hinzu.

if (viewPager.getCurrentItem() == 0){ 
// show list items with key 1 
}else if(viewPager.getCurrentItem() == 1){ 
//show list items with key 2 
}else if(....) 

jetzt einen Listener setzen und es auf den Knopf klicken rufen.

+0

Ich denke, das wird nicht richtig funktionieren, weil ein Fragment in einem Viewpager auf der rechten Seite tatsächlich initialisiert werden kann und ich das Fragment aktualisieren wollte, das nicht einmal angezeigt wird. Ich habe unten eine Antwort geschrieben. – Tomek

0

Wie immer, ich habe versucht, für ein paar Tage etwas tun, und wenn ich es hier gepostet, fand ich eine Sache, die ich falsch gemacht habe: D

Also, wie mache ich das:

In jedem eines Kindes Fragmente erstelle ich einen Rundfunkempfänger

receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context contextBroadcast, Intent intent) { 
      createListView(listView, context); 
     } 
    }; 

    IntentFilter filter = new IntentFilter(); 
    filter.addAction("com.cukrzyca.DISMISS"); 
    context.registerReceiver(receiver, filter); 

Und es stellt sich heraus, Sie gut vorbereiten IntentFilter haben, das ist, was ich falsch gemacht habe. Methode Create frischt nur das Listview und Dialog entlässt Aktivitäts Elternteil I Sendung gerade senden:

public void broadcastDismiss() { 
    Intent intent = new Intent(); 
    intent.setAction("com.cukrzyca.DISMISS"); 
    getContext().sendBroadcast(intent); 
} 
Verwandte Themen