Android: Obtenir la valeur unique de Hashmap Arraylist?

Donc en gros, j'ai une base de données qui utilise Hashmapping.
Après avoir exécuté une requête, j'aimerais sortie de l'ID et de le stocker dans un tableau dans une autre activité.
Après cela, je voudrais accéder à un élément du tableau.

Voici mon code pour la base de données

public ArrayList<HashMap<String, String>> getIDList() {
    ArrayList<HashMap<String, String>> IDList = new ArrayList<HashMap<String, String>>();
    String selectQuery = "SELECT cardID FROM flashcards";
    SQLiteDatabase database = this.getWritableDatabase();

    Cursor cursor = database.rawQuery(selectQuery, null);
    if(cursor.moveToFirst()) {
        do { HashMap<String, String> cardMap = new HashMap<String, String>();
        cardMap.put("cardID", cursor.getString(0));
        IDList.add(cardMap);

        } while(cursor.moveToNext());
    }
    return IDList;

C'est le code où je suis en train d'essayer d'accéder à tous les éléments. Dans ce cas, j'aimerais accéder au premier élément. Mais une erreur

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_flashcards_random);


    TextView currentID = (TextView) findViewById(R.id.currentIdText);
    ArrayList<HashMap<String, String>> IDList = dbTools.getIDList();
    currentID.setText((IDList.get(0)).toString());



}

des suggestions?

EDIT: Plus de code comme demandé.

C'est DB Outils code

    package com.izulki.flipper;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBTools extends SQLiteOpenHelper {
public DBTools(Context applicationContext){
super(applicationContext, "flashcards.db", null, 1);
}
String DBName = "flashcards";
@Override
public void onCreate(SQLiteDatabase database) {
String query = "CREATE TABLE flashcards (cardID INTEGER PRIMARY KEY, question VARCHAR, answer VARCHAR, subject VARCHAR, answered INTEGER, correct INTEGER)";
database.execSQL(query);
}
@Override 
public void onUpgrade(SQLiteDatabase database, int oldVersiom, int newVersion) {
String query = "DROP TABLE IF EXISTS flashcards";
database.execSQL(query);
onCreate(database);
}
public boolean checkCard(String CardID) {
SQLiteDatabase database = this.getReadableDatabase();
Cursor cursor = database.rawQuery("SELECT * FROM flashcards WHERE CardID = ? ", new String[]{CardID});
boolean exists = (cursor.getCount() > 0);
cursor.close();
return exists;
}
public void insertCard(HashMap<String, String> queryValues) {
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("question", queryValues.get("question"));
values.put("answer", queryValues.get("answer"));
values.put("subject", queryValues.get("subject"));
values.put("answered", 0);
values.put("correct", 0);
database.insert("flashcards", null, values);
database.close();
}
public int getCardsCount() {
String countQuery = "SELECT * FROM flashcards";
SQLiteDatabase flashcards = this.getReadableDatabase();
Cursor cursor = flashcards.rawQuery(countQuery, null);
int cnt = cursor.getCount();
cursor.close();
return cnt;
}
public int updateCard(HashMap<String, String> queryValues) {
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("question", queryValues.get("question"));
values.put("answer", queryValues.get("answer"));
values.put("subject", queryValues.get("subject"));
return database.update("flashcards", values, 
"cardID" + " =?", new String[] {queryValues.get("cardID")});
}
public void resetCardStatistics(int cardID) {
SQLiteDatabase database = this.getWritableDatabase();
String resetQuery = "UPDATE flashcards SET answered = 0, correct = 0 WHERE CardID ='" + cardID + "'";
database.execSQL(resetQuery);
}
public void deleteAllCards() {
SQLiteDatabase database = this.getWritableDatabase();
String deleteQuery = "Delete FROM flashcards";
database.execSQL(deleteQuery);
}
public void deleteCard(int cardID) {
SQLiteDatabase database = this.getWritableDatabase();
String deleteQuery = "DELETE FROM flashcards WHERE CardID ='" + cardID + "'";
database.execSQL(deleteQuery);
}
public ArrayList<HashMap<String, String>> getAllCards(){
ArrayList<HashMap<String, String>> cardArrayList = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT * FROM flashcards ORDER BY subject";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if(cursor.moveToFirst()){
do{
HashMap<String, String> cardMap = new HashMap<String, String>();
cardMap.put("cardID", cursor.getString(0));
cardMap.put("question", cursor.getString(1));
cardMap.put("answer", cursor.getString(2));
cardMap.put("subject", cursor.getString(3));
cardArrayList.add(cardMap);
} while(cursor.moveToNext());
}
return cardArrayList;
}
public ArrayList<HashMap<String, String>> getCardsSubject(String subjectSearch) {
ArrayList<HashMap<String, String>> subjectList = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT cardID FROM flashcards WHERE subject = '" + subjectSearch + "'";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if(cursor.moveToFirst()) {
do { HashMap<String, String> cardMap = new HashMap<String, String>();
cardMap.put("cardID", cursor.getString(0));
subjectList.add(cardMap);
} while(cursor.moveToNext());
}
return subjectList;
}
public ArrayList<HashMap<String, String>> getIDList() {
ArrayList<HashMap<String, String>> IDList = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT cardID FROM flashcards";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if(cursor.moveToFirst()) {
do { HashMap<String, String> cardMap = new HashMap<String, String>();
cardMap.put("cardID", cursor.getString(0));
IDList.add(cardMap);
} while(cursor.moveToNext());
}
return IDList;
}
public HashMap<String, String> getQuestionFromID(int randomID) {
HashMap<String, String> questionFinal = new HashMap<String, String>();
SQLiteDatabase database = this.getReadableDatabase();
String selectQuery = "SELECT question FROM flashcards WHERE cardID ='" + randomID + "'";
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do{
questionFinal.put("question", cursor.getString(0));
} while (cursor.moveToNext());
}
return questionFinal;
}
public HashMap<String, String> getAnswerFromID(int randomID) {
HashMap<String, String> answerFinal = new HashMap<String, String>();
SQLiteDatabase database = this.getReadableDatabase();
String selectQuery = "SELECT answer FROM flashcards WHERE cardID ='" + randomID + "'";
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do{
answerFinal.put("answer", cursor.getString(0));
} while (cursor.moveToNext());
}
return answerFinal;
}
public void incrementCorrect(int ID){
SQLiteDatabase database = this.getWritableDatabase();
String incrementQuery = "UPDATE flashcards SET correct = correct +1 WHERE CardID = '" + ID + "'" ;
database.execSQL(incrementQuery);
}
public void incrementAnswered(int randomID) {
SQLiteDatabase database = this.getWritableDatabase();
String incrementQuery = "UPDATE flashcards SET answered = answered +1 WHERE CardID = '" + randomID + "'" ;
database.execSQL(incrementQuery);
}
public HashMap<String, String> getCardInfo(int randomID){
HashMap<String, String> cardMap = new HashMap<String, String>();
SQLiteDatabase database = this.getReadableDatabase();
String selectQuery = "SELECT * FROM flashcards WHERE cardID ='" + randomID + "'";
Cursor cursor = database.rawQuery(selectQuery, null);
if(cursor.moveToFirst()){
do{
cardMap.put("cardID", cursor.getString(0));
cardMap.put("question", cursor.getString(1));
cardMap.put("answer", cursor.getString(2));
cardMap.put("subject", cursor.getString(3));
cardMap.put("answered", cursor.getString(4));
cardMap.put("correct", cursor.getString(5));
} while(cursor.moveToNext());
}
return cardMap;
}
}

C'est le code d'activité

    package com.izulki.flipper;
import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;
public class FlashcardsAnswer extends Activity {
DBTools dbTools = new DBTools(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flashcards_random);
TextView currentID = (TextView) findViewById(R.id.currentIdText);
ArrayList<HashMap<String, String>> IDList = dbTools.getIDList();
currentID.setText((IDList.get(0)).toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.flashcards_answer, menu);
return true;
}
}

Et c'est l'erreur

    02-21 15:02:55.777: E/AndroidRuntime(1827): FATAL EXCEPTION: main
02-21 15:02:55.777: E/AndroidRuntime(1827): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.IllegalStateException: Unable to get package info for com.izulki.flipper; is package not installed?
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.LoadedApk.makeApplication(LoadedApk.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.ActivityThread.access$1300(ActivityThread.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.os.Handler.dispatchMessage(Handler.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.os.Looper.loop(Looper.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.ActivityThread.main(ActivityThread.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at java.lang.reflect.Method.invokeNative(Native Method)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at java.lang.reflect.Method.invoke(Method.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at dalvik.system.NativeStart.main(Native Method)
02-21 15:02:55.777: E/AndroidRuntime(1827): Caused by: java.lang.IllegalStateException: Unable to get package info for com.izulki.flipper; is package not installed?
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     at android.app.LoadedApk.getClassLoader(LoadedApk.java)
02-21 15:02:55.777: E/AndroidRuntime(1827):     ... 12 more
quelle est l'erreur que vous obtenez?
avez-vous créer dbTools objet? coller le code et l'erreur

OriginalL'auteur Jack Sparrow | 2014-02-21