Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中从SQLite数据库创建嵌套数组_Android_Sqlite - Fatal编程技术网

在Android中从SQLite数据库创建嵌套数组

在Android中从SQLite数据库创建嵌套数组,android,sqlite,Android,Sqlite,我正在Android中创建一个简单的多选琐事游戏,用户有三个选择。正确的答案选择直接从数据库中提取,另外两个错误的选择使用一种方法随机选择。我将正确答案和2个错误答案放在一个数组中,然后洗牌数组。在随机选择方法中,我只从行中抓取一列,游戏运行良好。现在我想从每个随机行中获取3列。因此,我的问题是如何编写代码,即“获取两行三列的随机行,并将生成的数组放入一个可以洗牌的数组”。这是我的工作代码: DBAdapter: // ---Grabs 2 RANDOM --- public Strin

我正在Android中创建一个简单的多选琐事游戏,用户有三个选择。正确的答案选择直接从数据库中提取,另外两个错误的选择使用一种方法随机选择。我将正确答案和2个错误答案放在一个数组中,然后洗牌数组。在随机选择方法中,我只从行中抓取一列,游戏运行良好。现在我想从每个随机行中获取3列。因此,我的问题是如何编写代码,即“获取两行三列的随机行,并将生成的数组放入一个可以洗牌的数组”。这是我的工作代码:

    DBAdapter:
// ---Grabs 2 RANDOM ---
public String[] getRandomHA() {
    Cursor cursor = this.db.query(
            "hdtable Order BY RANDOM() LIMIT 2",
            new String[] { KEY_HA }, null, null, null, null, null);

    if (cursor != null) {
        int i = 0;
        String colStrings[] = new String[cursor.getCount()];
        while (cursor.moveToNext())
        {
            colStrings[i] = cursor.getString(0);
            i++;
            //cursor.close();
           }
        return colStrings;
        }
    return null;
    }

// --- END Grabs 2 RANDOM ---

Main Activity:
// --- Random 2 answers ----
public void getRandom() {
    dba.open();
    String[] wrong2 = dba.getRandomHA();
    dba.close();
}

shuffle an Array:
    // --- shuffle array ----       

    String[] numbArray = { rightAnswer[2], wrong2[0], wrong2[1] };
    List<String> aList = new ArrayList<String>();
    for (String s : numbArray)
        aList.add(s);
    Collections.shuffle(aList);
    TextView[] tVs = { optionA_TV, optionB_TV, optionC_TV };
    for (int i = 0; i < tVs.length; i++) {
        tVs[i].setText(aList.get(i));
    }
    // --- END shuffle array ----

如果上面的方法是正确的,那么我将如何编写主要的活动方法来反映嵌套的数组呢?

我想到的第一件事是使用类的一个实例来调用
nextXXX()
方法来生成一个随机数。使用该数字从数据库中选择一行作为随机错误答案

    // ---Grabs 2 RANDOM ---
public String[] getRandomHA() {
    Cursor cursor = this.db.query(
            "hdtable Order BY RANDOM() LIMIT 2",
            new String[] { KEY_Y, KEY_MD, KEY_HA }, null, null, null, null,         null);

    if (cursor != null) {
        int i = 0;
        String colStrings[] = new String[cursor.getCount()];
        while (cursor.moveToNext())
        {
            colStrings[i] = cursor.getString(0);
            colStrings[i] = cursor.getString(1);
            colStrings[i] = cursor.getString(2);
            i++;
            //cursor.close();
           }
        return colStrings;
        }
    return null;
    }

// --- END Grabs 2 RANDOM ---