0

我試圖設置一個帶有3個選項卡的tablayout,每個選項卡都有一個回收站視圖。我發現這個問題:How to implement RecyclerView with CardView rows in a Fragment with TabLayout 哪個更類似於我想要的,我試圖設置它,然後在完成此工作後設置數據檢索。Android Recycler在選項卡布局中查看

我現在得到的問題是設置PagerAdapter。這裏是我的代碼:

public class WorkoutDaysActivity extends BaseActivity{ 

ListView mListView = new ListView(this); 
ArrayList<CustomObject> w29w1m; 
CustomListViewAdapter mCustomListViewAdapter; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.workout_days); 
    mToolBar = activateToolbar(); 
    setUpNavigationDrawer(); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
    PagerAdapter pagerAdapter = 
      new PagerAdapter(getSupportFragmentManager(), WorkoutDaysActivity.this) 

    viewPager.setAdapter(pagerAdapter); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.setupWithViewPager(viewPager); 

    // Iterate over all tabs and set the custom view 
    for (int i = 0; i < tabLayout.getTabCount(); i++) { 
     TabLayout.Tab tab = tabLayout.getTabAt(i); 
     tab.setCustomView(pagerAdapter.getTabView(i)); 
    } 

} 


@Override 
public void onResume() { 
    super.onResume(); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

class PagerAdapter extends FragmentPagerAdapter { 

    String tabTitles[] = new String[] { "Tab One", "Tab Two", "Tab Three" }; 
    Context context; 

    public PagerAdapter(FragmentPagerAdapter fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return tabTitles.length; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       return new WorkoutDetailFragment(); 
      case 1: 
       return new WorkoutDetailFragment(); 
      case 2: 
       return new WorkoutDetailFragment(); 
     } 

     return null; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 

    public View getTabView(int position) { 
     View tab = LayoutInflater.from(WorkoutDaysActivity.this).inflate(R.layout.custom_tab, null); 
     TextView tv = (TextView) tab.findViewById(R.id.custom_text); 
     tv.setText(tabTitles[position]); 
     return tab; 
    } 

}} 

在那裏我得到一個錯誤的第一點是

PagerAdapter pagerAdapter = 
      new PagerAdapter(getSupportFragmentManager(), WorkoutDaysActivity.this) 

    viewPager.setAdapter(pagerAdapter); 

的錯誤是:

PagerAdapter (android.support.v4.app.FragmentPagerAdapter, Context) in PagerAdapter cannot be applied to: (android.support.v4.app.FragmentManager, WorkoutDaysActivity.this) 

的android.support.v4.app。 FragmentManager是用紅色下劃線的部分。第二個錯誤是在這個部分:

class PagerAdapter extends FragmentPagerAdapter { 

    String tabTitles[] = new String[] { "Tab One", "Tab Two", "Tab Three" }; 
    Context context; 

    public PagerAdapter(FragmentPagerAdapter fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 

錯誤是在超(fm);一部分,它規定:

FragmentPagerAdapter (android.support.v4.app.FragmentManager) in FragmentPagerAdapter cannot be applied to: android.support.v4.app.FragmentPagerAdapter 

我覺得這會是一個簡單的錯誤與進口做錯事,但我試圖修復它失敗了。任何幫助非常感謝你!

回答

0

PagerAdapter類擴展了FragmentPagerAdapter。然後,它的構造函數需要一個FragmentPagerAdapter來初始化。所以要初始化一個FragmentPagerAdapter,你需要一個FragmentPagerAdapter?

我認爲該參數應該是一個FragmentManager。

+0

工作正常!謝謝 – LBJ33