2017-01-17 5 views
0

Meine Benutzer können Einträge in meiner Navigation Drawer löschen, sie wählen aus, welche sie löschen möchten und sie sollte aus dem Menü entfernen.Artikel an einer bestimmten Position in der Navigationsschublade entfernen

Hier ist, wie ich versuche, es zu tun, so weit:

// Should remove item at position 'which' 
private void removeTab(int which) { 
    NavigationView navView = (NavigationView) findViewById(R.id.nav_view); 
    Menu menu = navView.getMenu(); 

    menu.removeItem(which + 1); 
} 

Aber es nicht das Element entfernen.

Ich bin mir nicht sicher, wie removeItem funktionieren sollte, gibt es eine Möglichkeit, ein Element in einem Navigation Drawer mit seiner Position im Menü zu entfernen?

EDIT:

ich die Idee, den Artikel zu verstecken, aber das ist problematisch, da ich um die nächsten zu verstecken versteckt werden muß, um den Überblick über die Anzahl der Elemente zu halten. (Wenn Item1 und Item2 ausgeblendet sind, befindet sich Item3 immer noch auf Position 3 und nicht auf 1, wenn sie angezeigt wird).

+0

Sie können Änderungs Sichtbarkeit verwenden. –

+0

Aber das macht nicht viel Sinn, wenn mein Benutzer den Artikel endgültig löscht. –

+1

Sind Sie sicher, dass wir den Menüpunkt löschen können? Ich denke, Sie sollten die Werte der Sichtbarkeit in der Datenbank speichern und entsprechend handeln –

Antwort

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


} 

private void hideItem() 
{ 
navigationView = (NavigationView) findViewById(R.id.nav_view); 
Menu nav_Menu = navigationView.getMenu(); 
nav_Menu.findItem(R.id.nav_settings).setVisible(false); 


} 
+1

nicht entfernen können Menü über diese Zeile ausblenden nav_Menu.findItem (R.id.nav_settings) .setVisible (false); –

+0

hoffe, es wird für dich arbeiten :) –

0

Sie können die Daten in einer Arraylist speichern. Wenn Sie über ein Element wischen, können Sie das Element aus der Array-Liste arraylist.remove(index) entfernen und adapter.notifyDataSetChanged() aufrufen.

Wichtig:

Wenn Sie diese Lösung implementieren, haben Sie die Arraylist mit dem Adapter und arbeiten auf der gleichen Liste Objekt zu übergeben.

0

müssen Sie die ID MenuItem angeben, die innerhalb removeItem entfernt werden soll. nicht positionieren.

wie folgt aus:

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 

       navigationView.getMenu().removeItem(item.getItemId()); 
      } 
     }); 
Verwandte Themen