在我的 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/