如何在Kotlin中将图像和文本添加到Sqlite并显示为recyclerView

时间:2019-02-05 11:23:02

标签: android sqlite kotlin android-recyclerview

我是编程新手,通过权限,我从用户那里获取了图像,并将其转换为Bitmap后将其设置为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)

                }
            }
        }


    }

}

0 个答案:

没有答案