Sunday, July 21, 2019

SQlite Image upload and display

MainActivity.java

package com.example.sqlite;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.sqlite.Adapter.DisplayAdapter;
import com.example.sqlite.Bean.DisplayBean;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private Activity activity=MainActivity.this;
    private TextView txt_upload;
    private Button btn_submit;
    private EditText ext_name,ext_city;
    private ImageView img;
    private int GALLERY=100;
    private Sqliteopenhelper sqliteopenhelper;
    Bitmap bitmap=null;
    private RecyclerView rvdata;
    private ArrayList<DisplayBean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        Setlistner();
    }
    private void init()
    {
        txt_upload=(TextView)findViewById(R.id.txt_upload);
        img=(ImageView)findViewById(R.id.img);
        btn_submit=(Button) findViewById(R.id.btn_submit);
        ext_name=(EditText) findViewById(R.id.ext_name);
        ext_city=(EditText) findViewById(R.id.ext_city);
        rvdata=(RecyclerView) findViewById(R.id.rvdata);

        list=new ArrayList<>();
        sqliteopenhelper=new Sqliteopenhelper(activity);

        list=sqliteopenhelper.getdata();
        rvdata.setLayoutManager(new LinearLayoutManager(activity));
        rvdata.setAdapter(new DisplayAdapter(activity,list));

    }
    private void Setlistner()
    {
        txt_upload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent galleryIntent = new Intent(Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

                startActivityForResult(galleryIntent, GALLERY);
            }
        });

        btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                sqliteopenhelper.InsertData(ext_name.getText().toString(),
                                                             ext_city.getText().toString(),
                                                             getEncoded64ImageStringFromBitmap(bitmap));

                ext_name.setText("");
                ext_city.setText("");  list=sqliteopenhelper.getdata();
                rvdata.setLayoutManager(new LinearLayoutManager(activity));
                rvdata.setAdapter(new DisplayAdapter(activity,list));
            }
        });
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == GALLERY && data!=null) {

                Uri contentURI = data.getData();
                try {
                     bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI);
                    Toast.makeText(MainActivity.this, "Image Saved!", Toast.LENGTH_SHORT).show();
                    img.setImageBitmap(bitmap);

                } catch (IOException e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, "Failed!", Toast.LENGTH_SHORT).show();
                }
        }
    }

    public String getEncoded64ImageStringFromBitmap(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteFormat = stream.toByteArray();
        String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP);
        return imgString;
    }

}


activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:orientation="vertical">

        <EditText
            android:id="@+id/ext_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter name"
            android:textColor="@android:color/black"/>

        <EditText
            android:id="@+id/ext_city"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter city"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"/>

    </LinearLayout>

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:layout_marginTop="10dp"
       android:orientation="horizontal">

       <TextView
           android:id="@+id/txt_upload"
           android:layout_width="wrap_content"
           android:layout_height="40dp"
           android:padding="8dp"
           android:background="@color/colorPrimary"
           android:textColor="@android:color/white"
           android:textStyle="bold"
           android:textSize="15sp"
           android:text="Upload"/>

       <ImageView
           android:id="@+id/img"
           android:layout_width="100dp"
           android:layout_height="100dp"
           android:layout_marginLeft="20dp"
           android:src="@drawable/ic_launcher_background"/>


   </LinearLayout>
    <Button
        android:id="@+id/btn_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit"
        android:textAllCaps="false"
        android:gravity="center"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"/>
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rvdata"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></androidx.recyclerview.widget.RecyclerView>
    </LinearLayout>
</LinearLayout>


Sqliteopenhelper.java


package com.example.sqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

import androidx.core.content.ContextCompat;

import com.example.sqlite.Bean.DisplayBean;

import java.util.ArrayList;

public class Sqliteopenhelper extends SQLiteOpenHelper
{
    private Context context;
    private SQLiteDatabase db;

    public Sqliteopenhelper(Context context) {
        super(context, "Student.db", null, 1);
        this.context=context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("create table IF NOT EXISTS student(s_id integer PRIMARY KEY               AUTOINCREMENT ,s_name Text ,s_city Text,s_image Text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }

    public void InsertData(String name,String city,String Image)
    {
        db=getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put("s_name",name);
        cv.put("s_city",city);
        cv.put("s_image",Image);
        long d=db.insert("student",null,cv);
        if(d!=-1)
        {
            Toast.makeText(context, "Recored Inserted", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(context, "Recored not Inserted", Toast.LENGTH_SHORT).show();

        }

    }

    public ArrayList<DisplayBean> getdata()
    {
        db=getReadableDatabase();
        Cursor c=db.rawQuery("select * from student",null);
        ArrayList<DisplayBean> listdata=new ArrayList<>();
        if(c.moveToFirst())
        {
           do {
               DisplayBean bean=new DisplayBean();
               bean.setS_name(c.getString(c.getColumnIndex("s_name")));
               bean.setS_city(c.getString(c.getColumnIndex("s_city")));
               bean.setS_image(c.getString(c.getColumnIndex("s_image")));
               listdata.add(bean);
           }while (c.moveToNext());
        }
        return listdata;
    }
}


DisplayBean.java


package com.example.sqlite.Bean;
public class DisplayBean
{
    public String s_name,s_city,s_image;


    public String getS_name() {
        return s_name;
    }

    public void setS_name(String s_name) {
        this.s_name = s_name;
    }

    public String getS_city() {
        return s_city;
    }

    public void setS_city(String s_city) {
        this.s_city = s_city;
    }

    public String getS_image() {
        return s_image;
    }

    public void setS_image(String s_image) {
        this.s_image = s_image;
    }
}


DisplayAdapter.java


package com.example.sqlite.Adapter;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.sqlite.Bean.DisplayBean;
import com.example.sqlite.R;
import java.util.ArrayList;

public class DisplayAdapter extends RecyclerView.Adapter<DisplayAdapter.MyViewholder>
{
    private Context context;
    private ArrayList<DisplayBean>list;

    public DisplayAdapter(Activity activity, ArrayList<DisplayBean> list) {
        this.context=activity;
        this.list=list;
    }

    @NonNull
    @Override
    public MyViewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_data,parent,false);
        return new MyViewholder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewholder holder, int position) {
        DisplayBean bean=list.get(position);
        holder.txt_nm.setText(bean.getS_name());
        holder.txt_city.setText(bean.getS_city());

        byte[] decodedString = Base64.decode(bean.getS_image(), Base64.DEFAULT);
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

        holder.img.setImageBitmap(decodedByte);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class MyViewholder extends RecyclerView.ViewHolder
    {
        TextView txt_nm,txt_city;
        private ImageView img;
        public MyViewholder(@NonNull View itemView) {
            super(itemView);

            txt_nm=(TextView)itemView.findViewById(R.id.txt_nm);
            txt_city=(TextView)itemView.findViewById(R.id.txt_city);
            img=(ImageView)itemView.findViewById(R.id.img);
        }
    }
}


item_data.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:layout_margin="10dp">


    <ImageView
        android:id="@+id/img"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_launcher_background"/>

  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_marginLeft="15dp"
      android:gravity="center"
      android:orientation="vertical">

      <TextView
          android:id="@+id/txt_nm"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="aaa"
          android:textSize="17sp"/>

      <TextView
          android:id="@+id/txt_city"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="aaa"
          android:textSize="17sp"/>
  </LinearLayout>

</LinearLayout>


AndroidManifest.xml


    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

No comments:

Post a Comment

Insert,Update and delete in Device Calender

Androidmanifest.xml < uses-permission android :name ="android.permission.WRITE_CALENDAR" /> < uses-permission androi...