0

を切り替えます。例えば意図getExtraは、私はそれが複数のクラスに意図して余分を送信することが可能です場合は疑問に思って、送信された余分見るためにswitch文を使用し、リサイクル業者ビューのデータを変更、余分なものを、に依存していた場合、複数のクラス

、私のアプリは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つのタブにデータを取り込みたい場所を理論的にありクリックした内容によって異なります。

ありがとうございました!

答えて

0

あなたはリストやハッシュマップに意図内で送信したデータを保持することができます。 onChildClickで

ArrayList<String> list = new ArrayList<String>(); 
    list.add("w29w1"); 
    list.add("w29w2"); 
    .... 

expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
    @Override 
    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 
     Intent intent = new Intent(getApplicationContext(), WorkoutDaysActivity.class); 
     intent.putExtra("value", list.get(childPosition)); 
     startActivity(intent); 
    } 

又はのHashMap:

HashMap<Integer, String> map = new HashMap<Integer, String>(); 
map.put(0, "w29w1"); 
map.put(1, "w29w2"); 
... 

Intent intent = new Intent(getApplicationContext(), WorkoutDaysActivity.class); 
intent.putExtra("value", map.get(childPosition)); 
startActivity(intent); 

EDIT:にその値を使用するWorkoutDaysActivity.class

Intent intent = getIntent(); 
String value = intent.getStringExtra("value"); 

フラグメントにデータを送信:

private void addPages(ViewPager pager) { 
    MyFragPagerAdapter adapter = new MyFragPagerAdapter(getSupportFragmentManager()); 
    MondayFragment mondayFragment = new MondayFragment(); 
    mondayFragment.setArguments(value); 
    adapter.addPage(mondayFragment); 
    ... 

    pager.setAdapter(adapter); 
} 
+0

私はそれはしかし、各タブのフラグメントクラスでそのデータを使用するようになるだろうどのように? – LBJ33

+0

問題を解決しましたか?ノーまだ – faranjit

+0

、recyclerviewの値が設定されていることだと私は、実際のフラグメントのクラスに値を必要とするので。 workoutdaysactivityではなく – LBJ33

関連する問題