Top*_*Cat 0 sqlite android cursor
我试图从sqlite中的表中获取所有项目,并需要在列表视图中显示它.
这是我获取物品的代码
public List<MenuData> getMenuItem(){
SQLiteDatabase db;
Cursor cursor=null;
List<MenuData> menuList = new ArrayList<MenuData>();
db=getReadableDatabase();
String query ="SELECT * from "+TABLE_NAME_MENU;
try{
cursor = db.rawQuery (query, null );
}
catch (NullPointerException e){
Log.e("Error","Null Pointer Exception");
}
if ( cursor.moveToFirst()) {
do {
MenuData menuData= new MenuData();
menuData.setKEY_ITEM_NAME(cursor.getString(cursor.getColumnIndex(KEY_ITEM_NAME)));
menuData.setKEY_ITEM_CATEGORY(cursor.getString(cursor.getColumnIndex(KEY_ITEM_CATEGORY)));
menuData.setKEY_ITEM_CONTENTS(cursor.getString(cursor.getColumnIndex(KEY_ITEM_CONTENTS)));
menuData.setKEY_ITEM_TYPE(cursor.getString(cursor.getColumnIndex(KEY_ITEM_TYPE)));
menuData.setKEY_PRICE(cursor.getString(cursor.getColumnIndex(KEY_PRICE)));
menuList.add(menuData);
} while (cursor.moveToNext());
}
return menuList;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我得到了表格最后一行的结果menuList,它在表格中有相同的行数.因此列表视图具有所有相同的项目.
移动循环MenuData menuData= new MenuData()内部,do-while以便创建新对象,而不是一遍又一遍地更新同一对象.
另外,改变
if (cursor!=null) {
cursor.moveToFirst();
Run Code Online (Sandbox Code Playgroud)
至
if (cursor.moveToFirst()) {
Run Code Online (Sandbox Code Playgroud)
因此,如果没有结果行,您的代码不会崩溃.检查cursor != null没有必要.
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |