ViewPager - Fragment - Holzweg?

  • 2 Antworten
  • Letztes Antwortdatum
B

Bolic

Neues Mitglied
0
Guten Abend,

hab nun schon meinen ersten Anlauf, das umzusetzen in den Sand gesetzt, warum ich nun mir das vorher genau überlegt habe. Und zwar würde ich gerne Wissen ob folgendes Gedankenexperiment so Hand und Fuß hat.

Und zwar möchte ich gern einen ViewPager mit festen angezeigten Tabs haben. Ähnlich wie bei der App Vine. Soweit kein Problem. Die einzelnen "Fenster" sind ja dann Fragments. Und nun kommt der Knackpunkt.

Das Fragment mit einer List bestücken und dort in die Liste die verschiedenen Views rein und raus "laden", um das Fragment zu verändern? Wie "refreshe" ich das Fragment? Finde ich nicht wirklich was zu.

ODER

Füge ich (insoweit das überhaupt geht) die Views (die in Variante 1 in einer ListView stecken) direkt dem Fragment hinzu? Aktualisiert sich dadurch das Fragment automatisch? Sind die Elemente scrollbar wie in einer Liste?

--> Das Fragment wird dann Views enthalten, die wiederum Werte enthalten, die ständig durch andere Aktionen geändert werden. Vergleichbar mit Stats aus Rollenspielen und zusätzlich noch ein CountDown...

Wenn ihr bis hierhin schon gelesen habt: Danke ;-) Und einen noch größeren Dank für brauchbare Antworten für mein Konstruktions- und Aktualisierproblem.
 
Du kannst einfach ein ListAdapter in jedes Fragment packen welcher die Liste dann füllt. Die Liste ist auch scrolable. Hoffe habe deine Frage richtig verstanden.
 
Danke für die Antwort.

Nun komme ich aber genau zu dem Problem, welches ich befürchtet habe:

Ich habe zwei Fragments die durch nen ViewPager(Tabs) erreichbar sind

Durch klicken auf ein Element aus einer ListView im zweiten Fragment, ändert sich ein Wert von einem Objekt im Hintergrund.

Dieses Objekt wird mit den entsprechenden Variablen in Fragment 1 angezeigt. Nun werden aber die Variablen nicht aktualisiert... Wie bringe ich nun das ganze dazu, dass es sich aktualisiert?

Code:
public Fragment getItem(int position) {
			// getItem is called to instantiate the fragment for the given page.
			// Return a DummySectionFragment (defined as a static inner class
			// below) with the page number as its lone argument.
			Fragment fragment = new DummySectionFragment();
			Bundle args = new Bundle();
			args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position);
			fragment.setArguments(args);
			return fragment;
		}
Code:
public static class DummySectionFragment extends Fragment {
		/**
		 * The fragment argument representing the section number for this
		 * fragment.
		 */
		public static final String ARG_SECTION_NUMBER = "section_number";
		ArrayList<Adapter_Avatar_Item> arrayList;
		Adapter_Avatar_fillList fillList;
		ListView list_avatar;

		public DummySectionFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = null;
			switch (getArguments().getInt(ARG_SECTION_NUMBER)){
			case 0:
				rootView = inflater.inflate(R.layout.fragment_avatar, container, false);
				list_avatar = (ListView) rootView.findViewById(R.id.listView_avatar);
				
				fillList = new Adapter_Avatar_fillList(avatarObj);
				arrayList = fillList.makeList();
				list_avatar.setAdapter(new Adapter_Avatar(rootView.getContext(), arrayList));
				
				break;
			case 1:
				rootView = inflater.inflate(R.layout.fragment_training, container, false);
				ListView list_training = (ListView) rootView.findViewById(R.id.listView_training);
				//////////
				Resources res = getResources();
				final String[] MENUITEMS = res.getStringArray(R.array.list_training);
				
				ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(rootView.getContext(), R.layout.list_training, MENUITEMS);
				list_training.setAdapter(listAdapter);
				list_training.setOnItemClickListener(new OnItemClickListener(){

					@Override
					public void onItemClick(AdapterView<?> arg0, View arg1,
							int arg2, long arg3) {
						Pool_Aufgabe pool = new Pool_Aufgabe();
						switch(arg2){
						
						case 0:
							if(avatarObj.canGetAufgabe() == false){
								avatarObj.addAufgabe(pool.getAufgabe(1));
								mViewPager.setCurrentItem(0);
								
						    }
							else{
								Toast.makeText(getActivity().getApplicationContext(), R.string.beschaftigt, Toast.LENGTH_SHORT).show();
							}
							break;
						}				
					}
					
				});
				///////
				break;
			}
			
			return rootView;
		}
	}


Im switch Case bastel ich die Fragments...

Und wie man sieht, ändert das OnClickEvent in Case 1, die Daten, die Case 0 letztlich anzeigen soll...


vielen dank für eure Hilfe
 
Zurück
Oben Unten