我試圖從我的數據庫中的數據庫示例顯示隨機數據,我總共有20個問題。我想每次訪問應用程序時隨機顯示10個qns。我第二次訪問它時,它會顯示其他10個以前沒有顯示過的qns。如何設置數據庫中的數據列表以隨機顯示在基於android的應用程序中?
我的代碼:
ArrayList<Integer> randList = new ArrayList<Integer>();
Random randGenerator = new Random();
ArrayList<String> list2 = new ArrayList<String>(db.selectData("MCQ",new String [] {"_id"}, "testId=0", null, null, null, null));
//random 10 n.o
for(int i=0;i<10;i++)
{
int randNum = randGenerator.nextInt(list2.size());
while (randList.contains(randNum))
{
randNum = randGenerator.nextInt(list2.size());
}
randList.add(randNum);
Log.d("rand no:"+i,String.valueOf(randNum));
}
ArrayList<String> idList = new ArrayList<String>();
//get the 10 _id that are chosen
for (int i=0; i<10;i++)
{
idList.add(list2.get(Integer.valueOf(randList.get(i))));
Log.d("id:"+i,String.valueOf((list2.get(Integer.valueOf(randList.get(i))))));
}
ArrayList<String> list3 = new ArrayList<String>(db.selectData("MCQ",new String [] {"Question"}, null, null, null, null, null));
Log.d("size",String.valueOf(list3.size()));
ArrayList<String> qnsList = new ArrayList<String>();
// == set question in arrangement of randList == //
for(int i=0;i<=list3.size();i++)
{
qnsList.add(list3.get(i));
Log.d("_id:"+i,String.valueOf(list3.get(i)));
}
我一次又一次測試了它,並意識到古怪,但它不能在_id = 20
該讀取的數據是什麼,我在我的日誌貓得到:
E/AndroidRuntime(1284): java.lang.IndexOutOfBoundsException: Invalid index 20, size is 20
E/AndroidRuntime(1284): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
有更多的,但我認爲它是沒用,因爲我試圖與剛剛_id = 19運行,它的工作原理,但一旦我更改爲20墜毀。
我試過了..它得到了同樣的錯誤。 – Jovi