【问题标题】:Populate spinner with a database column, first row disgarded使用数据库列填充微调器,第一行忽略
【发布时间】:2012-03-08 03:31:42
【问题描述】:
        db.open();
        cursor = db.getAllRecords();
        int i = 0;
        for(cursor.moveToFirst(); cursor.moveToNext(); cursor.isAfterLast()) { 
            spinnerItems[i] = cursor.getString(NAME_COLUMN);
            Log.v(TAG, "spinnerItem "+i+"="+spinnerItems[i]);
            i++;
        }

为什么上面的代码会在 LogCat 中给出这个结果?:

spinnerItem 0=name1
spinnerItem 1=name2
spinnerItem 2=name3
spinnerItem 3=name4 and so on

当数据库看起来像这样时:

row name
0   name0
1   name1
2   name2
3   name3
4   name4 and so on.

用数据库的一列中的全部内容填充微调器的最佳方法是什么?在上面我(尝试)创建 spinnerItems[] 然后我将 arrayAadapters 放入微调器中。

【问题讨论】:

    标签: android database spinner adapter


    【解决方案1】:

    对于您的主要问题,一切都关闭的原因在于您的 for 循环逻辑。

    循环从 moveToFirst() 开始,光标现在位于第 0 行。 然后,循环检查它是否通过了条件,即调用 moveToNext() - 光标现在位于第 1 行。

    所以第一次迭代时,您的光标位于第 1 行(如果您的光标只有 1 行,它将完全绕过循环!)。

    更好的 for 循环:

    int i=0;
    for (cursor.moveToFirst(); i < cursor.getCount(); i++) {
    //Your code
    cursor.moveToNext();
    }
    

    关于您的其他问题,很遗憾我没有答案......我也总是以编程方式构建它们。不过,一个快速的谷歌搜索为我提供了这个: http://androidforbeginners.blogspot.com/2010/02/how-to-populate-spinner-widget-from.html

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多