如何在循环中初始化数组

时间:2015-11-25 00:04:47

标签: android arrays sqlite

我一直在努力尝试在while循环中使用数组几个小时。问题是我对android开发很新,所以我不知道如何做到这一点。我见过类似的问题,但大多数/所有问题都不符合我的情况。下面的代码确实有效,但我为while语句中的每一行调用articlesData的一个新实例,这导致它只返回最后一行的值..有没有办法使用像ArticlesData []这样的数组并得到所有我的数据呢?请帮助:)这是我的代码:

public ArticlesData[] getArticleData(int no) {


    Log.e("DB STAT", "getArticleData Called");

    SQLiteDatabase db = helper.getWritableDatabase();

    String[] columns = { ArticlesHelper.ID, ArticlesHelper.TITLE, ArticlesHelper.IMAGEURL };

    Cursor cursor = db.query(ArticlesHelper.TABLE_NAME,
            columns,
            ArticlesHelper.DATENUMBER+" < '"+Integer.toString(no)+"'", null, null, null, ArticlesHelper.DATENUMBER+" DESC", "20");


    while (cursor.moveToNext()) {


        int id = cursor.getInt(0);
        Log.e("DB STAT", "Article Id = "+Integer.toString(id));

        String title = cursor.getString(1);
        Log.e("DB STAT", "Article Title = "+title);

        String url = cursor.getString(2);

        articlesData = new ArticlesData[] {
                new ArticlesData(title, Integer.toString(id), url)
        };
    }

    return articlesData;
}

1 个答案:

答案 0 :(得分:1)

您最有可能想使用CollectionList

public List<ArticlesData> getArticleData(int no) {
    Log.e("DB STAT", "getArticleData Called");

    SQLiteDatabase db = helper.getWritableDatabase();

    String[] columns = { ArticlesHelper.ID, ArticlesHelper.TITLE, ArticlesHelper.IMAGEURL };

    Cursor cursor = db.query(ArticlesHelper.TABLE_NAME,
            columns,
            ArticlesHelper.DATENUMBER+" < '"+Integer.toString(no)+"'", null, null, null, ArticlesHelper.DATENUMBER+" DESC", "20");

    List<ArticlesData> list = new ArrayList<ArticlesData>();

    while (cursor.moveToNext()) {
        int id = cursor.getInt(0);
        Log.e("DB STAT", "Article Id = "+Integer.toString(id));

        String title = cursor.getString(1);
        Log.e("DB STAT", "Article Title = "+title);

        String url = cursor.getString(2);

        list.add(new ArticlesData(title, Integer.toString(id), url));
    }

    return list;
}

你不应该尝试在这里使用原始数组,因为它具有固定的大小。如果您限制查询中的行数,则可以使用它,这样您就可以确切地知道需要多少元素,但即便如此,在代码中的其他地方使用集合仍然会容易得多。

由于您对Android开发和Java看起来很陌生,我建议您先熟悉一下基本数据结构,例如地图,列表和集合,然后您可能希望使用ORM来保存编写用于与数据库交互的样板代码的痛苦。