2016-10-25 3 views
0

in meinem sqlite db Ich habe eine TabellebevölNavigationsMenü von SQLite database- android

Name: Kategorie

Spaltenname: Positionen (nur eine Spalte) Zeilen in Spalte Artikel: abc, xyz, etc ...

aber ich möchte nicht benutzerdefinierte Navigationsschublade erstellen. Also habe ich die Standard-Navigationsschublade hinzugefügt.

in meinem DatabaseHandler.java gibt es einen Code, um alle Elemente in Arraylist abzurufen, wie folgt:

public ArrayList<menu> getAllMenu() { 
     ArrayList<menu> catList = new ArrayList<menu>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM " + CATEGOTY_TABLE_NAME; 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       menu menu = new menu(); 

       menu.setItem(cursor.getString(0)); 

     // Adding category to list 
       catList.add(menu); 
      } while (cursor.moveToNext()); 
     } 
     // return category list 
     return catList; 
    } 

MainActivity.java enthält:

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

i alle Elemente Standard-Menü entfernt haben, weil Ich möchte sie nicht in die XML-Datei einfügen. Ich möchte sie aus der Datenbank auffüllen.

aber die Frage ist, wie ich databasehandler.java nennen kann, dass die Array-Liste zu bekommen und es in navigationmenu

plz help ...

+0

Betrachtet DatabaseHandler erweitert Sqliteopenhelper-Klasse. Sie können also das DatabaseHandler-Objekt in der Aktivitätsklasse & Call-Methode getAllMenu() erstellen, wobei die zurückgegebene Liste auf navigationView gesetzt werden kann. – VVB

+0

bedeutet items = db.getAllMenu() ;. Recht? –

+0

, aber wie kann ich diese arraylist zum Navigationsmenü hinzufügen? –

Antwort

0

Hinzufügen von Code folgen, nach der Initialisierung des Navigationsmenüs, gab ich gewünschte Ausgabe:

NavigationView navigationView = (NavigationView)findViewById(R.id.nav_view);// initialization of navigation menu 
    navigationView.setNavigationItemSelectedListener(this);//adding listener to navigation menu 

    List<String> item = db.getAllMenu();//getting data from database 

    ListView lv=(ListView)findViewById(R.id.list_view_inside_nav);//initialization of listview 

    String[] lv_arr = new String[item.size()];//creating a String[] just as the size of the data retrieved from database 

    //adding all data from item list to lv_arr[] 
    for(int i=0;i<item.size();i++){ 
     lv_arr[i]= String.valueOf(item.get(i)); 
    } 

    //setting adapter to listview 
    lv.setAdapter(new ArrayAdapter<String>(MainActivity.this, 
      android.R.layout.simple_list_item_1, lv_arr)); 

Fertig !!! : D

+0

Übrigens, wenn Sie den Adapter vor dem Datenbank-Lookup deklariert haben, können Sie 'add' direkt zur Adaptervariablen –

+0

hinzufügen. Alternativ ist die' String [] 'komplett überflüssig –