java - 从 sqlite 数据库填充导航菜单 - android

标签 java android sqlite

在我的 sqlite 数据库中我有一张表

名称:类别

列名:items(只有一列) 项目列中的行:abc、xyz 等...

但我不想创建自定义抽屉导航。所以我添加了默认的抽屉导航 Activity 。

在我的 DatabaseHandler.java 中有一段代码用于检索 arraylist 中的所有项目,如下所示:

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 包含:

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

我已经删除了所有默认菜单项,因为我不想将它们放入 xml 文件中。我想从数据库填充它们。

但问题是,我如何调用databasehandler.java来获取该数组列表并将其放入导航菜单

请帮忙...

最佳答案

在初始化导航菜单后添加以下代码,给了我所需的输出:

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

完成!!! :D

关于java - 从 sqlite 数据库填充导航菜单 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40231538/

相关文章:

java - 将 hasmap 参数传递给 insert 方法时出现 classcastException

java - 在固定的时间段内等待多个 ExecutorServices 的终止

android - ANR 输入调度超时(等待,因为没有窗口有焦点,但有一个可能最终有焦点的应用程序)

android - 显示在警报 Activity 弹出窗口顶部的应用程序名称

java - sqlite 数据库的 on create 方法中出现错误

python json.loads 未终止的字符串错误

java - 以编程方式设置数据源的用户名和密码

android - GLSL ES 局部变量崩溃?

ios - 代码 : SQLite3: Leaving connection open

java - 刷新Jtable就是滚动表格