Как загрузить изображение из API и сохранить его в базе данных sqlite? - PullRequest
0 голосов
/ 24 октября 2019

Я уже получаю изображения в свой вид корзины. Все остальные детали были сохранены в базе данных sqlite. Но есть проблема с сохранением изображения.

это моя таблица базы данных и метод для сохранения деталей в базе данных

val CREATE_TABLE = "CREATE TABLE $TABLE_NAME " + "($ID INTEGER PRIMARY KEY, $BOOK_NAME TEXT, $DESCRIPTION TEXT, $AUTHOR TEXT, $COVER_PAGE BLOB, $ISBN TEXT, $LANGUAGE TEXT, $NUMBER_OF_PAGES INTEGER, $PRICE TEXT, $CATEGORY TEXT)" db?.execSQL(CREATE_TABLE)

fun addFavouriteBooks(
        id: Int,
        bookName: String,
        description: String,
        author: String,
        cover: ByteArray,
        isbn: String,
        language: String,
        numbOfPages: Int,
        price: String,
        category: String
    ): Long {
        val db = this.writableDatabase
        val contentValues = ContentValues()
        contentValues.put(ID, id)
        contentValues.put(BOOK_NAME, bookName)
        contentValues.put(DESCRIPTION, description)
        contentValues.put(AUTHOR, author)
        contentValues.put(COVER_PAGE, cover)
        contentValues.put(ISBN, isbn)
        contentValues.put(LANGUAGE, language)
        contentValues.put(NUMBER_OF_PAGES, numbOfPages)
        contentValues.put(PRICE, price)
        contentValues.put(CATEGORY, category)

        val res = db.insert(TABLE_NAME, null, contentValues)
        db.close()
        return res
    }

Вот моя функция в адаптере перезапуска, чтобы перехватывать данные в перезапускепросмотреть и передать его в базу данных sqlite. Я понятия не имею, чтобы отправить изображение, как другие детали.


        holder.like.setOnClickListener {
            var c_id = holder.id
            var c_name = holder.name.text.toString()
            var c_description = holder.description
            var c_author = holder.author.text.toString()
            var c_cover = holder.cover.toString()

            //i want to convert this c_cover into byte array

            var c_isbn = holder.isbn
            var c_lang = holder.language
            var c_numberOfPages: Int = holder.numbOfPages.toInt()
            var c_price = holder.price.text.toString()
            var c_category = holder.category

            var favList: Long = dbHelper.addFavouriteBooks(c_id.toInt(), c_name, c_description, c_author,c_cover, c_isbn, c_lang, c_numberOfPages, c_price, c_category)

            if(favList > 0)
            {
                Toast.makeText(context, "Book added to favourites", Toast.LENGTH_SHORT).show()
            }
        }

1 Ответ

1 голос
/ 28 октября 2019

Вот как мы это делаем в Java.

byte[] Imagebyte = getBitmapAsByteArray(((BitmapDrawable) YOUR_IMAGEVIEW.getDrawable()).getBitmap());

Затем мы сохраняем его в sqlite в ПОЛЕ с типом данных BLOB.

...