2016-03-02 82 views
0

我有一個導航抽屜的問題。我想知道當用戶點擊每個菜單的不同元素時如何顯示recyclerview。 這裏有一些源代碼和說明性捕獲材料設計:naviagtion抽屜與選項卡和recyclerview

enter image description here

N.B:不同的菜單項(「ACCUEIL,聯繫人員,等等......」)是在佈局的.xml文件。

MainActiviy.java

public class MainActivity extends AppCompatActivity { 
ActionBarDrawerToggle drawerToggle; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ButterKnife.inject(this); 

    setupWindowAnimations(); 

    //définir la toolbr en tant qu'actionbar 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 

    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, 0, 0); 
    drawerLayout.setDrawerListener(drawerToggle); 

    navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem menuItem) { 
        menuItem.setChecked(true); 
        drawerLayout.closeDrawers(); 
        return true; 
       } 
      }); 

    //on remplit notre viewpager, comme à notre habitude 
    viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { 
     @Override 
     public Fragment getItem(int position) { 
      return RecyclerViewFragment.newInstance(); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return "Tab " + position; 
     } 

     @Override 
     public int getCount() { 
      return 1; 
     } 
    }); 

    //indique au tablayout quel est le viewpager à écouter 
    tabLayout.setupWithViewPager(viewPager); 
} 

private void setupWindowAnimations() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 

     Explode explode = new Explode(); 
     getWindow().setExitTransition(explode); 

     Fade fade = new Fade(); 
     getWindow().setReenterTransition(fade); 
    } 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    drawerToggle.syncState(); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      drawerLayout.openDrawer(GravityCompat.START); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 




@OnClick(R.id.fab) 
public void onFabClick() { 
    Snackbar.make(fab, "Here's a Snackbar", Snackbar.LENGTH_LONG) 
      .setAction("Undo", new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       } 
      }).show(); 
} 
}            
+0

在每個menuItem上你可以得到ItemId並加載與它相關的數據並將其設置爲回收視圖適配器 – GiapLee

+0

我不理解。請舉個例子。 – KINDA

回答

0

不明白你想要什麼。你想在哪裏顯示回收站視圖?你已經有OnNavigationItemSelectedListener,只是檢查你點擊該菜單,你想要做什麼:

public boolean onNavigationItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
      case R.id.contact: 
      // do anything you want, ex 
      showContactList(); 
      break; 

} 

的函數來顯示您的聯繫人列表

private void showContactList(){ 
    List<Contact> data = getYourDataSomeHow(); 
    yourAdapter.setData(data); 
    yourRecyclerView.setAdapter(yourAdapter); 
} 
+0

我想要顯示一些聯繫信息以及在每個回收站視圖中調用的可能性。你看 ?其中到底有沒有我把 「...布爾onNavigationItemSelected ......」在我的MainActivity 並請寫recyclerview的一個例子,我不得不把 – KINDA

+0

所以,你的意思是,當點擊菜單中的接觸,你要在你的回收站顯示一些聯繫人項目,對嗎? –

+0

檢查我更新的答案,取決於您的佈局解決方案可能不同,但這是一般方法。在你的代碼中,你使用的是tablayout,然後我猜你的recyclerview放在了你的RecyclerViewFragment中。 –

1

源代碼示例爲您

public class NavActivity extends AppCompatActivity 
      implements NavigationView.OnNavigationItemSelectedListener { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_nav); 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 



      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
      drawer.setDrawerListener(toggle); 
      toggle.syncState(); 

      NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
      navigationView.setNavigationItemSelectedListener(this); 
     } 

     @Override 
     public void onBackPressed() { 
      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      if (drawer.isDrawerOpen(GravityCompat.START)) { 
       drawer.closeDrawer(GravityCompat.START); 
      } else { 
       super.onBackPressed(); 
      } 
     } 



     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      // Handle action bar item clicks here. The action bar will 
      // automatically handle clicks on the Home/Up button, so long 
      // as you specify a parent activity in AndroidManifest.xml. 
      int id = item.getItemId(); 

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

      return super.onOptionsItemSelected(item); 
     } 

     @SuppressWarnings("StatementWithEmptyBody") 
     @Override 
     public boolean onNavigationItemSelected(MenuItem item) { 
      // Handle navigation view item clicks here. 
      int id = item.getItemId(); 

      if (id == R.id.nav_camera) { 
       // Handle the camera action 
      } else if (id == R.id.nav_gallery) { 

      } else if (id == R.id.nav_slideshow) { 

      } else if (id == R.id.nav_manage) { 

      } else if (id == R.id.nav_share) { 

      } else if (id == R.id.nav_send) { 

      } 

      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      drawer.closeDrawer(GravityCompat.START); 
      return true; 
     } 
    } 

希望這可以幫到你

+0

請舉個例子//爲我處理動作 - 我想要更多的理解。 謝謝 – KINDA

+0

這是最基本的東西。如果你不明白,你需要開始閱讀更簡單的教程和官方Android網站上的文檔。如果你不理解代碼,那麼複製粘貼就沒有意義了。通讀NavigationView文檔,閱讀其中的1或2個教程,您將獲得它。 http://developer.android.com/reference/android/support/design/widget/NavigationView.html人們已經給你很好的答案,他們不能爲你的應用程序。 – iBobb

+0

儘管使用起來有些困難,但回收利用者視圖也是如此。尋找Codepath教程。我發現他們真的很好。 RecyclerView - https://github.com/codepath/android_guides/wiki/Using-the-RecyclerView – iBobb