基本上这不是问题本身,我的代码到目前为止。
我所拥有的是一个应用程序,它允许用户登录并根据他在数据库中的ID,显示他保存的笔记。对于这个视图,我有这部分代码:
title = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
MyDbHandler dbh = new MyDbHandler(this);
for(int i = 0; i < 999; i++) {
content = dbh.getNoteTitle(id, i); //getNoteTitle(int, int) returns String
if(content != null && content != "0")
title.add(content);
else
break;
}
list.setAdapter(title);
正如我所说,到目前为止这是有效的。 事情是 - 我对'休息'的使用非常不满意; “在这里,正如我在教育期间所学到的那样,不应该使用它。 有没有更顺畅的方法来解决这个问题?
也'内容!=“0”'应该是'! content.equals(“0”)'通常,对吧?但是那个不起作用......为什么会这样?
答案 0 :(得分:1)
我不确定你想做什么。首先,你应该对字符串使用“相等”方法。条件“content!=”0“将永远为真,因为您正在比较2个不同的对象。条件”! content.equals(“0”)“应该在大多数时候返回true(当值不是”0“时),并且你可能应该使用调试器来确切地看到内容的值是什么。
其次,如果您想从数据库中获取所有注释并向用户显示它们,您应首先在SQLiteOpenHelper中使用类似的方法(查询每个项目的数据库效率不高,加上关注点分离):
public ArrayList<String> getNotesList (int userID){
SQLiteDatabase db = getWritableDatabase();
Cursor c = db.query(TABLE_NAME, new String[] {MyDbHandler.COLUMN_NOTE_TITLE}, MyDbHandler.userID + "=" + userID,null, null, null, null);
ArrayList<String> list = null;
String noteTitle;
if (c != null && c.moveToFirst())
{
list = new ArrayList<String>(c.getCount());
for (int i = 0; i < c.getCount(); i++)
{
noteTitle = c.getString(c.getColumnIndex(MyDbHandler.COLUMN_SESSION_PATH));
list.add(noteTitle);
c.moveToNext();
}
}
c.close();
db.close();
return list;
我认为你不应该保存你不想使用的注释(例如null或“0”),所以我不会在这里检查,而是检查addNote方法。 对于列表初始化,您有:
MyDbHandler dbh = new MyDbHandler(this);
ArrayList listData = dbh.getNotesList(id)
if (listData != null && listData.length != 0){
title = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
listData.setAdapter(title);
}
我没有测试代码,但我希望它可以帮助你。祝你好运!