Как добавить изображение и текст в Sqlite и отобразить его recyclerView в Kotlin - PullRequest
0 голосов
/ 05 февраля 2019

Я новичок в программировании. Через разрешения я получаю изображение от пользователя и после преобразования его в растровое изображение, устанавливаю его в ImageView, я также создал базу данных и таблицу.Отправьте текст в SQLite и отобразите его на recyclerView ??

activity_main_xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="text"
        android:id="@+id/text"
        />



    <ImageView
        android:id="@+id/GotImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text"
        android:layout_centerHorizontal="true"
        />


    <Button
        android:id="@+id/ImageBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="163dp"
        android:text="Choose Photo" />

    <Button
        android:id="@+id/Add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="219dp"
        android:text="Add" />



    <!--<android.support.v7.widget.RecyclerView-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_below="@id/Add"-->
        <!--android:id="@+id/recycler">-->

    <!--</android.support.v7.widget.RecyclerView>-->

</RelativeLayout>

Класс модели

package com.example.muhammadrizwan.sqliterecyclerview

class Catogeries(var name:String,var Image:Byte) {

}

DbHelper

package com.example.muhammadrizwan.sqliterecyclerview

import android.content.ContentValues
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper

class DbHelper(var ctx:Context) : SQLiteOpenHelper(ctx,"My Datbase",null,1) {
    override fun onCreate(db: SQLiteDatabase?) {

        var create_table = "CREATE TABLE CATOGERIES (_Id INTEGER PRIMARY KEY AUTOINCREMENT , NAME STRING,IMAGE BLOB)"
        db?.execSQL(create_table)
    }

    override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {

    }

    fun insertData(catogeries: Catogeries,db:SQLiteDatabase)
    {
        var dbHelper = this.writableDatabase
        var value = ContentValues()
        value.put("Name",catogeries.name)
        value.put("Image",catogeries.Image)
        db.insert("Catogeries",null,value)
    }

}

MainActivity

package com.example.muhammadrizwan.sqliterecyclerview

import android.app.Activity
import android.app.AlertDialog
import android.content.DialogInterface
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.media.Image
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.provider.MediaStore
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
import java.io.ByteArrayOutputStream

class MainActivity : AppCompatActivity() {

    private lateinit var Title: EditText
    private lateinit var imageBtn: Button
    var CameraRequestCode :Int = 200
    var GalleryRequestCode :Int = 100
    private lateinit var _addBtn: Button
    var db = DbHelper(this)


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //_Image = findViewById<ImageView>(R.id.GotImage)
        Title = findViewById<EditText>(R.id.text)
        imageBtn = findViewById<Button>(R.id.ImageBtn)
        _addBtn = findViewById<Button>(R.id.Add)


        _addBtn.setOnClickListener {

            var _title = Title.text.trim().toString()

        }
        imageBtn.setOnClickListener {
            var dialogueBox = AlertDialog.Builder(this)
            var dialogueOptions = arrayOf("Camera","Gallery")
            dialogueBox.setTitle("Make Choice")
            dialogueBox.setItems(dialogueOptions,object : DialogInterface.OnClickListener
            {
                override fun onClick(p0: DialogInterface?, p1: Int) {
                    if(dialogueOptions[p1].equals("Camera"))
                    {
                        OpenCamera()
                    }
                    if (dialogueOptions[p1].equals("Gallery"))
                    {
                        OpenGallery()
                    }

                }

            })
            dialogueBox.show()
        }
    }

    private fun OpenGallery() {
        if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.READ_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED)
        {
            var GalleryIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
            startActivityForResult(GalleryIntent,GalleryRequestCode)
        }
        else
        {
            ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE),GalleryRequestCode)
        }
    }

    private fun OpenCamera() {
        if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.CAMERA)== PackageManager.PERMISSION_GRANTED)
        {
            val CameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
            startActivityForResult(CameraIntent,CameraRequestCode)
        }
        else
        {
            ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CAMERA),CameraRequestCode)
        }

    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when(requestCode)
        {
            CameraRequestCode->
            {
                if(grantResults.size>0 && grantResults[0]== PackageManager.PERMISSION_GRANTED )
                {
                    OpenCamera()
                }
                else
                {
                    Toast.makeText(this,"Error", Toast.LENGTH_SHORT).show()
                }
            }

            GalleryRequestCode->
            {
                if(grantResults.size>0 && grantResults[0]== PackageManager.PERMISSION_GRANTED)
                {
                    OpenGallery()
                }
                else
                {
                    Toast.makeText(this,"Error", Toast.LENGTH_SHORT).show()
                }
            }

        }

    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        when(requestCode)
        {
            CameraRequestCode->
            {
                if(resultCode== Activity.RESULT_OK)
                {

                    val img = data?.extras?.get("data")
                    GotImage.setImageBitmap(img as Bitmap)
                }
            }
            GalleryRequestCode->
            {
                if(resultCode== RESULT_OK)
                {
                    var URI = data!!.data
                    var Image = MediaStore.Images.Media.getBitmap(this.contentResolver,URI)
                    GotImage.setImageBitmap(Image)

                }
            }
        }


    }

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