【问题标题】:Load Database from asset to arraylist将数据库从资产加载到数组列表
【发布时间】:2017-03-20 12:28:25
【问题描述】:

我的 SQLite 数据库大约有 200~300 行。我的表有两列:_idText

我想将整个表数据加载到ArrayList 中,这样我就可以使用函数通过_id 访问任何行。

我的问题是,我不确定在哪里创建 ArrayList - 在我的主类或 DatabaseHelper 类中,如下面的链接所示。

https://blog.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

【问题讨论】:

    标签: android sqlite arraylist


    【解决方案1】:

    首先像这样创建一个 pojo 类:

    public class Data {
    
        //private variables
        int _id;
        String _text;
    
        // Empty constructor
        public Data(){
    
        }
        // constructor
        public Data(int id, String text){
            this._id = id;
            this._text = text;
        }
    
    
        // getting ID
        public int getID(){
            return this._id;
        }
    
        // setting id
        public void setID(int id){
            this._id = id;
        }
    
        // getting text
        public String getText(){
            return this._text;
        }
    
        // setting text
        public void setText(String text){
            this._text = text;
        }
    
    }
    

    现在向 DBHelper 类添加以下方法:

    // Getting All data
     public List<Data> getAllData() {
        List<Data> dataList = new ArrayList<Data>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_NAME;
    
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
    
        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Data data = new Data();
                data.setID(Integer.parseInt(cursor.getString(0)));
                data.setText(cursor.getString(1));
                // Adding data to list
                dataList.add(data);
            } while (cursor.moveToNext());
        }
    
        // return data list
        return dataList;
    }
    

    只需从您的主类中调用此方法。您将获得列表中的所有数据,将列表添加到 ArrayList 并填充您的 ListView。快乐编码:)

    【讨论】:

    • 如果我将整个列表添加到 arrlist,然后我可以通过 _id 随机调用它吗?我只想在对话框的 textview 中显示列表中的一个随机文本
    • 顺便说一句,我有一个问题,这一行:“ String selectQuery = “SELECT * FROM” + TABLE_NAME;”如果我的表名是 android_metada 我应该写它 String selectQuery = "SELECT * FROM + android_metada";
    • 在 ArrayList 大小上使用 Random() 函数,结果将是您的 (_id)。字符串 selectQuery = "SELECT * FROM android_metada";使用这个查询。
    • 我已经这样做了,现在我遇到了另一个问题,我尝试在对话框中的列表视图中加载我的数据库(列表视图只是一个测试以查看我的数据库是否加载)但是当我调用函数和你给我的方法,它崩溃了。你介意看看我的项目吗?,如果我不能在明天之前解决数据库的问题,我想我会将我的解决方案更改为在值中添加字符串,然后召回然后将其添加到数组中。
    猜你喜欢
    • 2011-07-25
    • 2014-12-06
    • 1970-01-01
    • 2014-11-12
    • 2013-07-10
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2013-09-19
    相关资源
    最近更新 更多