Zitat
Also gehört das findViewById und setzen des faragment in die JsonAdapter.java?
Nein das findViewById ist und bleibt in der Mainactivity.
Zitat
von dort gebe ich quasi die Anweisung an das ViewModel das er mir die page switchen soll? Mit
Nicht ganz du speicherst den Zustand in dem ViewModel. LiveData ist sozusagen eine besondere Variable was den Wert aufnimmt und speichert.
Beide Klassen (Activity und Adapter) können nachdem sie sich die Instanz von dem ViewModel geholt haben darauf zugreifen.
Das Machst du mit dem ViewModelProvider, wie du den In der Activity einsetzt kannst du dir in den schon verlinkten Dokus ansehen.
So und nun kommt der Besondere DatenTyp (Klasse) ins Spiel. Der der lässt sich auch mit einen Observier auf Veränderungen beobachten. Der Observier kann dann eine Action ( Methode )ausführen zb dein setCurrentItem().
Das macht er unabhängig deinen zutuen wenn er eine Veränderung in der Variablen bemerkt.
Ich hoffe der Sachverhalt ist jetzt klar geworden.
Was du da als Action benutz ist dir überlassen MethodenRef Lambda oder Klassisch eine anonyme Klasse ist dir überlassen.
Sogar eine eigne nicht anonyme Klasse ist möglich. Ich bevorzuge die MethodenRef seit Java8.
Anonyme Klasse wäre das.
final Observer<Integer> nameObserver = new Observer<>() {
@Override
public void onChanged(@Nullable final Integer newValue) {
viewPager2.setCurrentItem(newValue);
}
};
mainModel.getPage().observe(this, nameObserver);
Bei den EditTexten ist das Ja genau dasselbe.
Ich glaube du solltest dir die Grundlagen von OOP und vor allen den LifeCycle
einer Activity anschauen.