【问题标题】:Android problem getting Arraylist<double[]> from cursor从光标获取 Arraylist<double[]> 的 Android 问题
【发布时间】:2010-12-05 19:11:21
【问题描述】:

我需要从我的光标中获取一个值。该值需要采用以下格式:

        List<double[]> values = new ArrayList<double[]>();

问题是当我执行“.add”时,它会出错,希望我将其更改为“length”。我必须将它放在列表中才能使应用程序正常工作。这是我的代码,有没有办法做到这一点?我究竟做错了什么?

    cursor = managedQuery(Provider.CONTENT_URI,
            proj,
            null,
            null,
            null);

            while (cursor.moveToNext()) { 
        double value; 
        column_value = cursor.getColumnIndex(CsvProvider.VALUE);
        value = cursor.getDouble(column_value);
        values.add(value); //this did not work
        values.add(new double[] {value}); //this did work
    } ;

谢谢迈克!

【问题讨论】:

    标签: android cursor arraylist


    【解决方案1】:

    首先,您永远不应该解释错误。如果您遇到错误,请将其复制并粘贴到您的问题中。

    关于你的问题:

    您有一个双精度数组列表,即 cValues 列表中的每个条目都必须是双精度 []。但是,您只是添加了一个普通的双精度数。那是行不通的。我不知道您的列表应该如何设置,如果您错误地将 [] 放入,或者您确实需要一个数组列表,但假设每个条目都需要一个双精度数组,那么您需要添加new double[] { value }

    旁注:为什么不简单地 while (cursor.moveToNext()) { ... } 而不是这个 do/while 构造?

    【讨论】:

    • 谢谢迈克。当红色波浪线位于错误代码下方时,这并不是真正的错误,而是 Eclipse 中的更多快速修复。我会清理 do/while 并且我同意 moveToNext 会更好。这是有效的,但我需要从我的光标中填充它: List values = new ArrayList(); values.add(new double[] { 4.9, 5.3, 3.2, 4.5, 6.5, 4.7, 5.8, 4.3, 4, 2.3, -0.5, -2.9, 3.2, 5.5, 4.6, 9.4, 4.3, 1.2, 0, 0.4 , 4.5, 3.4, 4.5, 4.3, 4 });
    • 好的,所以你想要 List 中的一个条目和一个双精度数组?那么,在这种情况下,使用 new double[cursor.getCount()] 创建一个双精度数组并在循环中写入它。
    • 这为我修复了“......那么你需要添加一个新的 double[] { value }”。谢谢!我试过一次,但其他错误不断出现。我想我只是太早放弃了,因为在修复了弹出的其他一些之后一切都很好。
    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2011-07-05
    • 2011-10-02
    • 2011-10-20
    相关资源
    最近更新 更多