Как программно добавлять элементы в навигационный ящик, а затем обрабатывать их щелчки?

avatar
user9457945
8 апреля 2018 в 09:44
37
3
0

Я уже искал это, я должен сделать что-то вроде этого:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View view = navigationView.getHeaderView(0);
Menu menu = navigationView.getMenu();
menu.add("element");

Но как обрабатывать их клики? Я не могу жестко закодировать это, потому что их еще даже не существует.

Источник

Ответы (3)

avatar
isabsent
8 апреля 2018 в 13:24
0

Вы должны реализовать интерфейс android.support.design.widget.NavigationView.OnNavigationItemSelectedListener для вашего android.support.v7.app.AppCompatActivity и поймать щелчок по программно добавленному пункту меню:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
    ...

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        String itemName = item.getTitle().toString();
        if ("element".equals(itemName){
            //Do what you want...
        }
    }

    ...
}
avatar
hiten pannu
8 апреля 2018 в 11:51
0

Вы можете указать другие представления как дочерние элементы NavigationView

<android.support.design.widget.NavigationView>
   <ScrollView>
         <LinearLayout>
         </LinearLayout>
   </ScrollView>
</android.support.design.widget.NavigationView>
avatar
y.allam
8 апреля 2018 в 11:12
0

вот так:

MenuItem item = menu.add("element");
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
   @Override
   public boolean onMenuItemClick(MenuItem item) {
      //your logic

      return false;
   }
});
user9457945
9 апреля 2018 в 20:32
0

Большое спасибо, но как я могу поместить это в цикл for?