Ich frage mich, ob es möglich ist, ein extra mit Absicht zu mehreren Klassen zu senden, und verwenden Sie eine switch-Anweisung, um zu sehen, welche extra gesendet wurde, und je nachdem, was extra, ändern Sie die Recycler View-Daten .Intent getExtra switch case, mehrere Klassen
Zum Beispiel hat meine App eine erweiterbare Listenansicht mit 12 Optionen. Jede Option sendet sie an eine neue Klasse mit Tablayout- und Recycler-Ansicht. Mit dem Tablayout habe ich 3 Fragmente für jede Registerkarte, wo die Daten für jede Recycler-Ansicht aktuell gesetzt sind. Das funktioniert gut, aber ich frage mich, wie ich es machen kann, ohne eine Menge Klassen für die 12 verschiedenen Optionen zu machen.
Hier ist mein erweiterbarer Listenansichtscode. In der ersten Kinderposition können Sie sehen, worüber ich mit dem putExtra spreche.
expandableListView.setAdapter(mAdapter);
expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
if (groupPosition == 0) {
if (childPosition == 0) {
Intent intent = new Intent(getApplicationContext(), WorkoutDaysActivity.class);
intent.putExtra("value", "w29w1");
startActivity(intent);
}
if (childPosition == 1) {
Intent intent = new Intent(getApplicationContext(), WorkoutDaysActivity.class);
startActivity(intent);
}
if (childPosition == 2) {
Intent intent = new Intent(getApplicationContext(), WorkoutDaysActivity.class);
startActivity(intent);
}
if (childPosition == 3) {
Intent intent = new Intent(getApplicationContext(), WorkoutDaysActivity.class);
startActivity(intent);
} else return false; }
Hier ist mein WorkoutDaysActivity, wo es die Absicht, den Benutzer auf Klicken der erweiterbaren Liste Ansicht sendet:
public class WorkoutDaysActivity extends BaseActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.workout_days);
mToolBar = activateToolbar();
setUpNavigationDrawer();
ViewPager vp = (ViewPager) findViewById(R.id.view_pager);
this.addPages(vp);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(vp);
tabLayout.setOnTabSelectedListener(listener(vp));
}
//ADD ALL PAGES
private void addPages(ViewPager pager) {
MyFragPagerAdapter adapter = new MyFragPagerAdapter(getSupportFragmentManager());
adapter.addPage(new MondayFragment());
adapter.addPage(new WedFragment());
adapter.addPage(new FridayFragment());
//SET ADAPTER to pager
pager.setAdapter(adapter);
}
private TabLayout.OnTabSelectedListener listener(final ViewPager pager) {
return new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
};
}
}
Und hier ist eine meiner Registerkarte Fragmente. Die anderen beiden sind im Grunde das gleiche:
public class WedFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.wed_fragment, null);
// //RECYCLERVIEW
RecyclerView rv = (RecyclerView) view.findViewById(R.id.mRecyclerWed);
rv.setLayoutManager(new LinearLayoutManager(this.getActivity()));
rv.setAdapter(new MyRecyclerAdapter(this.getActivity(), getWedWorkout()));
return view;
}
private ArrayList<Workout> getWedWorkout() {
//COLLECTION OF MONDAY WORKOUT
ArrayList<Workout> workout = new ArrayList<>();
//SINGLE EXERCISE
Workout workouts = new Workout("Bench", "60", "6", "155", false);
//ADD TO COLLECTION
workout.add(workouts);
workouts = new Workout("Bench", "70", "5", "175", false);
workout.add(workouts);
return workout;
}
@Override
public String toString() {
return "Wednesday";
}
}
Diese 3-Fragment Klassen theoretisch sind, wo ich möchte ein Schaltergehäuse setzen, um zu sehen, welche Artikel auf erweiterbare Liste Ansicht geklickt wurde, und die Daten in den drei Registerkarten bevöl abhängig davon, was geklickt wurde.
Danke für die Hilfe!
Wie würde ich es allerdings, dass die Daten zu verwenden, in der einzelnen Registerkarten Fragmente Klasse? – LBJ33
Haben Sie das Problem gelöst? – faranjit
Nein, noch nicht, weil ich den Wert in der tatsächlichen Fragmentklasse benötige, da dort der Wert von recyclerview gesetzt ist. Nicht die Trainingstage – LBJ33