0

3つのタブを持つタブレイアウトを設定しようとしていますが、各タブにはリサイクラービューがあります。私はこの質問を見つけました: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は赤で下線が引かれた部分です。 2番目のエラーはこの部分にあります:

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

エラーはsuper(fm)にあります。

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

これは間違ったものをインポートすると単純なエラーになると思いますが、それを修正しようとして失敗しました。ご協力いただきありがとうございました!

答えて

0

PagerAdapterクラスは、FragmentPagerAdapterを拡張します。その後、そのコンストラクタはFragmentPagerAdapterを初期化するためにTAKESします。したがって、FragmentPagerAdapterを初期化するには、既にFragmentPagerAdapterが必要ですか?

私は、パラメータがFragmentManagerであると考えています。

+0

それがうまくいった!ありがとう – LBJ33

関連する問題