Как сохранить Custom ArrayList в базе данных SQLite и получить значения - PullRequest
0 голосов
/ 17 апреля 2020

Итак, у меня есть клиентский Arraylist типа RedditPost:

Это класс RedditPost:

Я смотрел учебник для этого помощника, но я знаю, что многие из них не правы и смотрю сохранить и получить мой RedditPost ArrayList. Если вы хотите увидеть больше кода, пожалуйста, спросите. Извините, я действительно новичок в java

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы можете использовать операторы для оптимизированной вставки больших массивов данных, например: -

private static final String INSERT = "insert into "
            + TABLE_NAME+ " (" + COLUMN_1 + ", "
            + COLUMN_2 + ", "+COLUMN_3+") values (?, ?, ?)";

public void insertReditPosts(ArrayList<RedditPost> redditPosts) {
        SQLiteDatabase database = this.getWritableDatabase();
        int aSize = redditPosts.size();
        database.beginTransaction();
        try {
            SQLiteStatement insert = database.compileStatement(INSERT);
            for (int i = 0; i < aSize; i++) {
                insert.bindString(1, redditPosts.get(i).id);
                insert.bindString(2, redditPosts.get(i).title);
                insert.bindString(3, redditPosts.get(i).url);
                insert.executeInsert();
            }
            database.setTransactionSuccessful();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            database.endTransaction();
        }
    }

Из вашей деятельности просто вызовите этот метод и передайте ArrayList, который сохранит его в базе данных. Добавьте этот код, чтобы сохранить нажатый элемент при длительном нажатии в виде списка

lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                           int pos, long id) {
                Log.v("long clicked","pos: " + pos);
                RedditPost redditPost = postsArrayList.get(pos);
                if(redditPost!=null) {
                    addPostData(redditPost);
                }
                return true;
            }
        });
0 голосов
/ 17 апреля 2020

В вашем методе getData:

</p> <pre><code> public List<RedditPost> getData(){ List<RedditPost> posts = new ArrayList<>(); SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM " + TABLE_NAME; Cursor data = db.rawQuery(query, null); if(data.moveToFirst()){ do{ RedditPost post = new RedditPost(); post.setId = data.getString(0); post.setTitle = data.getString(1); post.setUrl = data.getString(2); posts.add(post); } while(data.moveToNext); } data.close; return posts; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...