Ahmed amin Anane
Ahmed amin Anane

Reputation: 1

How to pass an image using the SQLite database And retrieve it in recycleview

.. I could not pass the image to the sqlitedatabase. I am trying to pass an image and retrieve it to recycleview

How to pass an image, in (model class)Do use (String) or (byte[]) for the image ،

And in myadapter inside the onbindviewholder use a glide library or not

Model class


public class model



{



  String name,contact,email,location,data,image;



     



    public model(String name, String contact, String email, String location, String data ,String image) {



        this.name = name;



        this.contact = contact;



        this.email = email;



        this.location = location;



        this.data = data;



        this.image = image;

   

 }

...... Getter and setter 

myadapter



public myadapter(ArrayList<model> dataholder,RecycleinterFace recycleinterFace) {

        this.dataholder = dataholder;

        this.recycleinterFace = recycleinterFace;

        

    }



    @NonNull

    @Override

    public myviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.singlerow,parent,false);

        return new myviewholder(view);

    }



    @SuppressLint("CheckResult")

    @Override

    public void onBindViewHolder(@NonNull myviewholder holder, int position) {

        final model model = dataholder.get(position);



        holder.dname.setText(dataholder.get(position).getName());

        holder.dcontact.setText(dataholder.get(position).getContact());

        holder.demail.setText(dataholder.get(position).getEmail());

        holder.dlocation.setText(dataholder.get(position).getLocation());

        holder.ddata.setText(dataholder.get(position).getData());

        

        ///Glide.with(holder.dname.getContext()).load(dataholder.get(position).getImage()).into(holder.dimage);

    }



    @Override

    public int getItemCount() {

        return dataholder.size();

    }







    class myviewholder extends RecyclerView.ViewHolder

    {

        TextView dname,dcontact,demail,dlocation,ddata;

        ImageView dimage;



        public myviewholder(@NonNull View itemView) {

            super(itemView);

            dname=(TextView)itemView.findViewById(R.id.displayname);

            dcontact=(TextView)itemView.findViewById(R.id.displaycontact);

            demail=(TextView)itemView.findViewById(R.id.displayemail);

            dlocation=(TextView)itemView.findViewById(R.id.displaylocation);

            ddata=(TextView)itemView.findViewById(R.id.displaydata);

            dimage = (ImageView) itemView.findViewById(R.id.displayPicteres);

MainActivity



public class MainActivity extends AppCompatActivity{

    // the activity result code

    int SELECT_PICTURE = 200;



    TextInputLayout name,contact,email,location,data ;

     

    FloatingActionButton fb;

     Button BSelectImage,sbmt;

    ImageView imageView;



    @SuppressLint("MissingInflatedId")

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);



        name = (TextInputLayout) findViewById(R.id.nametext);

        contact = (TextInputLayout) findViewById(R.id.contacttext);

        email = (TextInputLayout) findViewById(R.id.emailtext);

        location = (TextInputLayout) findViewById(R.id.locationtext);

        data = (TextInputLayout) findViewById(R.id.datatext);

        imageView =  findViewById(R.id.imgh);

        

        BSelectImage =  findViewById(R.id.selecetimg);

        fb = (FloatingActionButton) findViewById(R.id.fbtn);

        sbmt = (Button) findViewById(R.id.sbmt_add);

        

         

        sbmt.setOnClickListener(v -> {

            processinsert

                    (name.getEditText().getText().toString(),

                            contact.getEditText().getText().toString(),

                            email.getEditText().getText().toString(),

                            location.getEditText().getText().toString(),

                            data.getEditText().getText().toString());



        });



            fb.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View view) {

                    Intent i = new Intent(getApplicationContext(), fetchdata.class);

                    startActivity(i);

                }

            });



        BSelectImage.setOnClickListener(v -> {

            img();

        });

    }



    @Override

    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {



        super.onActivityResult(requestCode, resultCode, data);



        if (resultCode == RESULT_OK) {



            if (requestCode == SELECT_PICTURE) {



                Uri selectedImageUri = data.getData();

                if (null != selectedImageUri) {



                     imageView.setImageURI(selectedImageUri);

                }

            }

        }

    }





    private void img() {

        Intent i = new Intent();

        i.setType("image/*");

        i.setAction(Intent.ACTION_GET_CONTENT);

        startActivityForResult(Intent.createChooser(i, "Select Picture"), SELECT_PICTURE);

    }







      @SuppressLint({"SetTextI18n", "CheckResult"})

    private void processinsert(String n, String c, String e, String l, String d,String i)

    {

       String res=new dbmanager(this).addrecord(n,c,e,l,d,i);



        name.getEditText().setText("");

       contact.getEditText().setText("");

       email.getEditText().setText("");

       location.getEditText().setText("");

        data.getEditText().setText("");





        Toast.makeText(getApplicationContext(),res,Toast.LENGTH_SHORT).show();

    }

Dbmanager



public class dbmanager extends SQLiteOpenHelper

{

   private static final String dbname="dbcontact";



    public dbmanager(@Nullable Context context) {

        super(context, dbname, null, 12);

    }



    @Override

    public void onCreate(SQLiteDatabase sqLiteDatabase)

    {

       String qry="create table tbl_contact ( id integer primary key autoincrement, name text," +

               " contact text," +

               " email text," +

               "location text," +

               "data text,"+

               "image text)";

       sqLiteDatabase.execSQL(qry);

    }



    @Override

    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i,int i1)

    {

      String qry="DROP TABLE IF EXISTS tbl_contact";

      sqLiteDatabase.execSQL(qry);

      onCreate(sqLiteDatabase);

    }



    public  String addrecord(String name, String contact, String email, String location, String data ,String image)

    {

        SQLiteDatabase db=this.getWritableDatabase();



        ContentValues cv=new ContentValues();

        cv.put("name",name);

        cv.put("contact",contact);

        cv.put("email",email);

        cv.put("location",location);

        cv.put("data",data);

        cv.put("image",image);

        float res=db.insert("tbl_contact",null,cv);



        if(res==-1)

             return "Failed";

        else

             return  "Successfully inserted";



    }



    public Cursor readalldata()

    {

        SQLiteDatabase db=this.getWritableDatabase();

        String qry="select * from tbl_contact order by id desc";

        Cursor cursor=db.rawQuery(qry,null);

        return  cursor;

    }

Fetchdata



public class fetchdata extends AppCompatActivity implements RecycleinterFace{

    myadapter recycleadapter;

    FloatingActionButton add;

    RecyclerView recyclerView;

    ArrayList<model> dataholder;







    @SuppressLint({"MissingInflatedId"})

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_fetchdata);



        add  = findViewById(R.id.floatingActionButton);

        add.setOnClickListener(v ->{

            Intent i = new Intent(getApplicationContext(), MainActivity.class);

            startActivity(i);

        });



        recyclerView=(RecyclerView)findViewById(R.id.recview);

        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        recycleadapter = new myadapter(dataholder,this);



        Cursor cursor=new dbmanager(this).readalldata();





        dataholder=new ArrayList<>();



        while(cursor.moveToNext()) {

            model obj=new model(cursor.getString(1),

                    cursor.getString(2),

                    cursor.getString(3),

                    cursor.getString(4),

                    cursor.getString(5),



                    cursor.getString(6));



            dataholder.add(obj);

        }



        myadapter adapter=new myadapter(dataholder,this);

        recyclerView.setAdapter(adapter);

        recycleadapter.notifyDataSetChanged();



    }





Upvotes: 0

Views: 16

Answers (0)

Related Questions