从SQLite db接收未知的结果计数

时间:2013-06-18 06:40:52

标签: android sqlite loops count break

基本上这不是问题本身,我的代码到目前为止。

我所拥有的是一个应用程序,它允许用户登录并根据他在数据库中的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”)'通常,对吧?但是那个不起作用......为什么会这样?

1 个答案:

答案 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); 
}

我没有测试代码,但我希望它可以帮助你。祝你好运!