Android:从 Hashmap Arraylist 获取单个值?

2024-02-13

基本上,我有一个使用哈希映射的数据库。 运行查询后,我想输出 ID 并将其存储在另一个活动的数组中。 之后,我想访问数组中的单个元素。

这是我的数据库代码

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;

这是我尝试访问元素的代码。在本例中,我想访问第一个元素。但出现错误

@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());



}

有什么建议么?

编辑:根据要求提供更多代码。

这是数据库工具代码

    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;

    }
}

这是活动代码

    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;
    }

}

这就是错误

    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

尝试这个 :

for (HashMap<String, String> map : IDList)
     for (Entry<String, String> mapEntry : map.entrySet())
        {
        String key = mapEntry.getKey();
        String value = mapEntry.getValue();
        }

对于单个元素:IDList.get(0).get(key);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:从 Hashmap Arraylist 获取单个值? 的相关文章

  • 按回键隐藏软键盘

    我有一个EditText in an Activity我希望当我打开它时它处于活动状态并且软键盘处于打开状态Activity 这是我的xml for EditText
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • 为什么我将可绘制文件重命名为 .9.png 后出现“Some file crunching failed”?

    我正在测试 9 patch 图像 在一切正常之前 我重命名drawable file ic button beat box default png to ic button beat box default 9 png 然后我收到错误 某些
  • 连接到不可发现的蓝牙设备

    我正在开发一个安卓应用程序 只是一个一般性问题 是否可以连接到公开不可发现的设备 提前致谢 如果您之前已与该设备配对 则即使该设备未处于可发现模式 也可以再次连接到该设备 参见这篇文章 以编程方式连接到配对的蓝牙设备 https stack
  • Android-工具栏中的SearchView

    我只想在我的应用程序中添加 searchview 但我不想搜索任何东西 只是我想要用户输入的查询 到目前为止 我尝试了这段代码 但是当我运行我的应用程序时它崩溃了 Update 我尝试了这个 但即使我的应用程序崩溃了 main menu x
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • Android模拟器分配内存失败8

    当我尝试从 Eclipse 运行 WXGA800 模拟器时 出现如下错误 Failed to allocate memory 8 This application has requested the Runtime to terminate
  • android 中camera.setParameters 失败

    我已将相机功能包含在我的应用程序中 我还在市场上推出了该应用程序 我从一位用户那里收到一条错误消息 称他在打开相机时遇到错误 我已经在 2 1 的设备上测试了该应用程序 我从用户那里得到的错误是使用 Nexus One 它主要运行 2 2
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • Android:确定 2.2 及更高版本上的摄像头数量

    我的应用程序需要在 Android 2 2 及更高版本上运行 我需要一种方法来确定可用摄像机的数量 有很多帖子解决了这个问题 但我找不到一个有效的 一种解决方案是简单地检测操作系统版本 任何 2 2 版本的设备都仅限于 1 个摄像头 即使该
  • Android - iphone 风格 tabhost [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • 如何在Android中解析xml类型的HTTPResponse

    我有一个 Android 应用程序 我使用 POST 方法来获取响应 这是我的代码 HttpResponse httpResponse httpclient execute httppost HttpEntity resEntity htt
  • 如何以编程方式创建活动转换?

    我想以编程方式创建一个动画 以从触摸屏点启动具有缩放效果的活动 接下来我模拟缩放输入效果
  • Android ADT Eclipse 插件,parseSDKContent 失败

    我刚刚设置了我的第一个 Android 开发环境 其中包括 日食3 5 Mac OS X 10 5 适用于 x86 mac 的 Android SDK ADT Eclipse 插件 0 9 6 我已将 set PATH 设置为我的 SDK

随机推荐

  • sum 函数如何在 python 中与 for 循环一起工作[重复]

    这个问题在这里已经有答案了 我在python中使用sum函数 我很清楚它的一般结构sum 可迭代 开始 但我无法理解以下代码背后的逻辑 test sum 5 for i in range 5 print output test 输出 25
  • Android:addTextChangedListener 无法正常工作

    我想对用户在其中输入的内容做出反应EditText所以我用了addTextChangedListener方法 当用户输入单个字符时 代码为onTextChanged正在运行 一切正常 例如 如果用户输入 a 那么onTextChanged将
  • ggplot2 以轴单位指定点大小

    我想从一个简单的数据集中绘制一个矩形内有大点的图 我想在不同方面显示可能有多个结果 问题是矩形的大小 使用geom rect 以轴单位定义 而size的论证geom point是在其他一些单位 因此 矩形上的点的相对大小根据面的数量而变化
  • 浏览器后退按钮处理

    我正在尝试处理浏览器后退按钮事件 但找不到任何解决方案 我想询问用户是否使用 确认框 单击浏览器后退按钮 如果他选择 确定 我必须允许后退按钮操作 否则我必须停止后退按钮操作 任何人都可以帮助我实现这一点 如果按下后退按钮 则警告 确认用户
  • 在 XElement.Load 上保留 \r\n

    有没有办法可以在 XElement Load 上保留 r n TextReader reader new StringReader rawInputString rawInputString is just text in html for
  • 关于清单中的全屏和无标题栏

    我想将我的应用程序设置为全屏视图 我想到将其设置在个人活动中使用FullScreen and NoTitlebar 但我想在整个应用程序的清单 XML 文件中设置它 而不是每个活动 这可能吗 帮助我 谢谢 要将您的应用程序或任何单独的活动显
  • 如何通过单击 ASP.NET 中的图像按钮来传输 zip 文件?

    我的问题 当用户单击 aspx 页面上的图像按钮时 代码隐藏会创建一个 zip 文件 然后我尝试将该 zip 文件流式传输给用户 为了流式传输文件 我使用以下代码 FileInfo toDownload new FileInfo fullF
  • C# 8 switch 表达式不够“智能”

    这段代码很简单 只是一个普通的开关 bool isSomething strSomething switch I gt true D gt false gt null 但是 编译器给了我以下错误 CS0037 无法将 null 转换为 bo
  • python中的嵌套正则表达式

    在 Perl 中我可以这样做 number qr zero one two three four five six seven eight nine ix foo qr quantity s number ix 我的实际正则表达式有很多行
  • 如何在浏览器中调试angularjs的$rootScope对象

    当 AngularJS 应用程序加载到浏览器中时 有没有办法对其进行调试 IE 我希望得到 rootScope我当前的应用程序 我该怎么做呢 巴塔朗 1 另外 您可以通过从控制台执行以下命令来获取 DOM 中任何元素的范围 angular
  • 根据列表框尺寸调整列表框内容的大小

    我正在尝试根据列表框本身调整列表框内容的大小 这是在 WPF 中完成的 关于这如何可能的任何想法 我认为当您说 调整大小 时 您的意思是您想要在两个方向上拉伸项目 要采用默认的列表框并水平拉伸项目 您需要做的是
  • C++ 求两个向量之间的差异

    假设你有 2 个向量 vector
  • 如何在 Eclipse 中找到可重写的方法

    public class test2 extends ListActivity 例如 我想找到 ListActivity 中可以重写的方法是什么 在 eclipse 中找到这个的快捷键是什么 如何通过 eclipse intellisens
  • 如何将 fancybox 绑定到动态添加的元素?

    我使用 jquery fancybox 1 3 4 作为弹出表单 但我发现 fancybox 无法绑定到动态添加的元素 例如 当我向当前文档添加 html 元素时 像这样 首先我使用 jquery 将一个元素附加到主体 document b
  • Jackson - 将内部对象列表反序列化为更高级别的列表

    使用 Spring Boot 和 Jackson 如何将包装 内部列表直接反序列化为外层列表 例如 我有 transaction items item itemNumber 193487654 itemDescription Widget
  • 从 JavaScript 手动触发 iPhone/iPad/iPod 键盘

    我正在开发一个 HTML 代码编辑器 使用简单的 DIV 并捕获事件 当我在 iPad 上使用它时 键盘永远不会弹出 因为从技术上讲我并不处于可编辑字段中 有没有办法以编程方式告诉 iPad 我需要键盘 如果您的代码是通过用户操作启动的某些
  • 将 pop() 与 JavaScript 关联数组结合使用

    我怎样才能在JS中做类似下面的事情 我想模仿 pop 在对象而不是数组上 var deck cardK 13 cardQ 12 cardAJ 11 var val deck pop console log Key val key conso
  • Python 代码块的正则表达式?

    如何创建一个可以匹配行开头以及以 tab 开头的所有以下行的正则表达式 例如 not keyword not this line keyword and random text this line this line and this li
  • 从 CSV 文件创建 ODS 工作表

    我有一组 CSV 文件 需要将其转换为具有多个选项卡式工作表的单个 ODS 甚至 Excel 电子表格 目前我正在使用 python 的 pyexcel 库 但它有很多错误并且速度非常慢 Libreoffice 有一个很好的文件转换实用程序
  • Android:从 Hashmap Arraylist 获取单个值?

    基本上 我有一个使用哈希映射的数据库 运行查询后 我想输出 ID 并将其存储在另一个活动的数组中 之后 我想访问数组中的单个元素 这是我的数据库代码 public ArrayList