、私のアプリは12個のオプションで拡張可能なリストビューを持っています。各オプションはtablayoutとrecyclerビューで新しいクラスにそれを送ります。 tablayoutでは、各リサイクラービューのデータが現在設定されているタブごとに3つのフラグメントがあります。これはうまくいきますが、私は12種類のオプションのためにたくさんのクラスを作らなければどうやってそれをやり遂げることができるのだろうと思っています。
は、ここに私の拡張可能なリストビューのコードです。最初の子の位置では、私がputExtraについて話していることを見ることができます。
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) {
}
};
}
}
そして、ここに私のタブの断片の一つである:ここで
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; }
は意図が拡張可能なリストビューのクリックでユーザーを送信し、私のWorkoutDaysActivity、です。他の2つは基本的に同じである:
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";
}
}
これらの3つのフラグメントのクラスは、私がクリックされた拡張可能なリストビュー上のどの項目を参照してスイッチケースを置くのが好き、そして3つのタブにデータを取り込みたい場所を理論的にありクリックした内容によって異なります。
ありがとうございました!
私はそれはしかし、各タブのフラグメントクラスでそのデータを使用するようになるだろうどのように? – LBJ33
問題を解決しましたか?ノーまだ – faranjit
、recyclerviewの値が設定されていることだと私は、実際のフラグメントのクラスに値を必要とするので。 workoutdaysactivityではなく – LBJ33