2017-02-10 9 views
0

Ich habe bereits einen Viewpager, der funktioniert, aber ich habe einen kleinen Fehler. Der Benutzer kann die Seiten selbst hinzufügen oder löschen. Auf diesen Seiten habe ich einen Editiertext (tatsächlich habe ich mehr, aber es ist der gleiche Fall für alle), welcher der Name der Seite ist. Wenn der Benutzer eine Seite erstellt, die "Seite 1" aufruft, diese löscht und unmittelbar danach eine weitere Seite erstellt, die "Seite 2" aufruft, zeigt das Fragment die Daten auf Seite 1 an. "Warum? Ich rufe notifyDataSetChanged(); nach dem Erstellen an und Löschen einer Seite, also warum das Fragment nicht aktualisiert wird? Wenn ich die Aktivität verlasse und ich es neu starte die "Seite 2", die der Benutzer erstellt hat, werden die Daten von "Seite 2" angezeigt. Was muss ich noch tun, um richtig zu aktualisieren ? das FragmentFragment mit ViewPager PagerAdapter nicht die Ansicht aktualisieren

ich benutze diese Bibliothek: link

Meine onCreate Methode

  viewPager = (ViewPager) findViewById(R.id.viewpager); 
      viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab); 
      pages = new FragmentPagerItems(this); 
      int i = 0; 
      for (Points points : Pref.getList_points()) { 
       pages.add(FragmentPagerItem.of(points.getName(), FragmentConfigurationPoints.class, new Bundler().putInt("param1", i).get())); 
       i++; 
      } 

      adapter = new FragmentPagerItemAdapter(getSupportFragmentManager(), pages){ 
       @Override 
       public int getItemPosition(Object object) { 
        return PagerAdapter.POSITION_NONE; 
       } 
      }; 

      viewPager.setAdapter(adapter); 
      viewPagerTab.setViewPager(viewPager); 

Meine Methoden einer Seite

pages.add(FragmentPagerItem.of(
     Pref.getList_points().get(Pref.get_size() - 1).getName(), 
     FragmentConfigurationPoints.class, 
     new Bundler().putInt("param1", Pref.get_size() - 1).get() 
)); 
adapter.notifyDataSetChanged(); 
viewPagerTab.setViewPager(viewPager); 
viewPager.setCurrentItem(Pref.get_size() - 1, true); 

Antwort

0

Reset-Adapter hinzufügen mit neuen Daten sollten neue Daten zwingen zu laden.

viewPager.setAdapter(adapter); 

notifyDataSetChanged() nicht richtig tun, was Sie brauchen. Diese Methode aktualisiert Daten im Adapter nicht selbst Adapter. Check-out die reference

void notifyDataSetChanged() 
/*Notifies the attached observers that the underlying data has been changed and any View reflecting the data set should refresh itself.*/ 
+0

Wenn ich ersetzen 'adapter.notifyDataSetChanged' mit ' adapter = new FragmentPagerItemAdapter (getSupportFragmentManager(), Seiten) { @Override public int getItemPosition (Object-Objekt) { Return PagerAdapter. POSITION_NONE; } }; ' Es ändert überhaupt nichts ... – filol

+0

@filol reset adapter! viewPager.setAdapter (Adapter); ich wollte es nicht neu definieren –

+0

Oh ja tut mir leid, aber ich habe es schon versucht und es funktioniert nicht besser – filol

Verwandte Themen