0

我想知道是否有可能發送一個額外的意圖多個類,並使用switch語句來查看哪些額外的發送,並取決於什麼額外的,改變回收視圖數據。意圖getExtra切換案例,多個類

例如,我的應用程序有一個可擴展列表視圖和12個選項。每個選項都會將其發送到帶有Tablayout和回收站視圖的新類。通過tablayout,每個標籤頁中有3個片段,當前爲每個回收站視圖設置數據。這工作正常,但我想知道如何做到這一點,而不需要爲12個不同的選項製作大量的課程。

這是我可擴展的列表視圖代碼。在第一個孩子的位置,你可以看到我在說putExtra的內容。

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,其中意圖將用戶的擴展列表視圖中點擊:

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) { 

     } 
    }; 
} 
} 

這裏是我的標籤片段之一。其他兩個基本上是相同的:

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

您可以將意圖內發送的數據保存在列表或散列表中。

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

在onChildClick:

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); 

編輯:要在使用該值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