我正在Android中创建一个简单的多选琐事游戏,用户有三种选择。正确的答案选择直接从DB中提取,另外两个错误选择是使用方法随机选择的。我把正确的和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 ----
这就是我编写DB Adapter方法的方法吗?
// ---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 ---
如果上面的方法是正确的,那么我如何编写主要活动方法以反映嵌套数组?
答案 0 :(得分:0)
我想到的第一件事是使用java.util.Random类的实例来调用其中一个nextXXX()
方法来生成一个随机数。使用该数字从数据库中选择一行作为随机错误答案。