如何构建数组,推送它们,并在Java / Android中循环它们

时间:2012-03-07 20:32:53

标签: java android arrays

我来自一个动作脚本,我对如何在java中使用数组感到困惑。

在我的主要活动中,我创建了一个名为mIcons的空数组,如此

private Array mIcons;

现在我想通过使用我的DataBaseHelper类中的方法来设置该数组的值,如下所示:

public Array getHomeScreenIcons() {

        Array iconList;

        // Select All Query
        String selectQuery = "SELECT  * FROM " + homeIcons;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {

iconList.push(的Integer.parseInt(cursor.getString(0)));

            } while (cursor.moveToNext());
        }
        Log.v(TAG, "List Created"); 
        // return contact list

}

到目前为止,跳出代码的粗线是问题..我如何推送到我的阵列

然后我将要从我的主要活动using.length

为该数组运行for循环

4 个答案:

答案 0 :(得分:7)

使用 ArrayList 参数化为您想要的任何类型

ArrayList<Integer> iconList = new ArrayList<Integer>();

添加

iconList.add(Integer.parseInt(cursor.getString(0)));

使用

进行迭代
for (int i: iconList)
{
    // i is your entire array starting at index 0
}

for (int i=0; i< iconList.size(), i++)
{

}

答案 1 :(得分:2)

您可能正在考虑ArrayList

private ArrayList<String> iconList = ArrayList<String>();
iconList.add("Stuff");

然后再循环

for (int i=0; i<iconList.size(); i++) {
    String newStuff = iconList.get(i);
}

答案 2 :(得分:1)

你可能应该阅读一些基本的java教程来熟悉数组的语法和功能。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html可能是一个很好的起点。

查看您的具体问题 -

您通常不希望以您的方式使用Array类。它更像是一个助手类。此外,您似乎要使用堆栈语义,而您可能希望使用堆栈。

首先,数组: 你声明一个这样的数组:

Type[] myArray = new Type[arraySize]; 

然后你用索引来访问它:

Type myThingFromArray = myArray[myArrayIndex];

你把东西放进去就像这样:

myArray[myTargetIndex] = myObjectOfTypeType;

java中的原始数组具有静态大小,并且不易增长。对于大多数应用程序,最好使用Collections框架的成员。如果你正在积极寻找堆栈(当你提到推送时),那么你可以使用Stack<Integer>并拥有所有常规堆栈操作。

使用现代集合类的另一个好处是,您可以使用for-each构造迭代您的集合,这消除了一些常规的样板。一个例子:

public ArrayList<Integer> iconList;
public Array getHomeScreenIcons() {

    Array iconList = new ArrayList<Integer>();

    // Select All Query
    String selectQuery = "SELECT  * FROM " + homeIcons;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            iconList.add(Integer.parseInt(cursor.getString(0)));
        } while (cursor.moveToNext());
    }
    Log.v(TAG, "List Created"); 
    // return contact list

    //Iterate like so:
    for (Integer i : iconList){ 
        System.out.println("Here's all integers in the icon-list: " + i);
    }
}    

答案 3 :(得分:0)

您可以使用Java定义数组:

int[] intArray = new int[3]; // array for three ints
String[] stringArray = new String[10]; // array for 10 Strings

因此,对于您的代码,您可以执行以下操作:

if (cursor.moveToFirst()) {
    int[] iconList = new int[cursor.getCount()];
    int index = 0;
    do {
        iconList[index] = Integer.parseInt(cursor.getString(0));
        index++;
    } while (cursor.moveToNext());
}

之后你可以像这样遍历数组:

for (int icon : iconList) {
    // Do something with icon
}