Как сохранить данные во внешней базе данных sqlite и отобразить в RecyclerView - PullRequest
0 голосов
/ 02 марта 2019

Я создал внешнюю базу данных sqlite, в которой хранится информация о книгах.Его хранить в папке активов.Я создал объект книги, но теперь я не уверен, как хранить значения из базы данных в нем.Я использовал функцию списка для извлечения значений из базы данных с помощью библиотеки sqliteaccesshelper и вызвал ее в основной деятельности.Было бы очень полезно, если бы кто-то предложил мне, как хранить значения в моем объекте книги. Это - учебник, которому я следовал.

Мой объект book - это book () с четырьмя параметрами.

public book(String title, String author, byte[] image, String issue) {
        Title = title;
        Author = author;
        Image = image;
        Issue = issue;

    }

Это функция базы данных.Обратите внимание, что это не правильно, и я не уверен, как заставить его хранить значение в моем объекте Book.

public List<String> getdetails() {
        List<String> lstBook = new ArrayList<>();
        Cursor cursor = database.rawQuery("SELECT Book_name, Author, Book_cover, Issue_status FROM books", null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
//This line is showing an error.
            lstBook.add(cursor.getString(cursor.getColumnIndex("Book_name")), cursor.getString(cursor.getColumnIndex("Author")), cursor.getBlob(cursor.getColumnIndex("Book_cover")), cursor.getString(cursor.getColumnIndex("Issue_Status")));

            book Book = new book(); //this is the book object
            Book.setTitle(cursor.getString(0));
            Book.setAuthor(cursor.getString(1));
            Book.setImage(cursor.getBlob(2));
            Book.setIssue(cursor.getString(3));
            cursor.moveToNext();
        }
        cursor.close();
        return lstBook; 
    }

Это мой MainActivity

// Open the database
        databaseAccess.open();

        List<String> lstBook = databaseAccess.getdetails();



        RecyclerView myrv = (RecyclerView) findViewById(R.id.recyclerview_id);
        RecyclerViewAdapter myAdapter = new RecyclerViewAdapter(this, lstBook);
        myrv.setLayoutManager(new GridLayoutManager(this, 2));
        myrv.setAdapter(myAdapter;

        // Close the database
        databaseAccess.close();
    }

А это мой RecyclerView Adapter(Хотя я не уверен насчет установленной части изображения)

@Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.bookname.setText(mData.get(position).getTitle());
        holder.bookauthor.setText(mData.get(position).getAuthor());
        byte[] data = mData.get(position).getImage(); Bitmap image = toBitmap(data);
        holder.bookimg.setImageBitmap(image);
        holder.issuestatus.setText(mData.get(position).getIssue());

    }

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Я разобрался, и он отлично работает. Это видео помогло мне.Я просто следовал его способу добавления книг в список.Я создал функцию в своем классе DatabaseAccess и просто получил к ней доступ в Обязательном действии.Это функция.

public ArrayList<book> getdetails(String query, String category) {
        ArrayList<book> list = new ArrayList<book>();
        String[] where= new String[]{category};
        Cursor cursor = database.rawQuery(query, where);
        if (cursor!=null) {
            if (cursor.moveToFirst()) {
                do {
                    book Book = new book();
                    Book.setTitle(cursor.getString(1));
                    Book.setAuthor(cursor.getString(6));
                    Book.setImage(cursor.getBlob(2));
                    Book.setPublisher(cursor.getString(3));
                    Book.setPublish_date(cursor.getString(4));
                    Book.setISBN(cursor.getString(5));
                    Book.setDescription(cursor.getString(9));
                    Book.setIssue(cursor.getString(10));
                    list.add(Book);
                }while (cursor.moveToNext());
            }
        }cursor.close();
        return list;
    }

0 голосов
/ 02 марта 2019

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

http://www.sqlitetutorial.net/sqlite-java/sqlite-jdbc-driver/

https://bitbucket.org/xerial/sqlite-jdbc/src/default/

вы можете попробовать этиили ищите других.

Я не использовал ни одного из них для sqlite db, хранящегося в активах, вы пытаетесь поиграть.

Надеюсь, это поможет.

...