android room database crud opration :
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
Button mainBtn1,mainBtn2;
EditText mainEdit,mainEdit1;
Adapter adapter;
List<MainData> DataArrayList=new ArrayList<>();
LinearLayoutManager layoutManager;
RoomDb database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.recyclerView);
mainBtn1=findViewById(R.id.mainBtn1);
mainBtn2=findViewById(R.id.mainBtn2);
mainEdit=findViewById(R.id.mainEdit);
mainEdit1=findViewById(R.id.mainEdit1);
database = RoomDb.getInstance(this);
DataArrayList = database.maindao().getAll();
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
adapter = new Adapter(DataArrayList,MainActivity.this);
recyclerView.setAdapter(adapter);
mainBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String sText = mainEdit.getText().toString().trim();
String sText1 = mainEdit1.getText().toString().trim();
if(!sText.equals("")&&(!sText1.equals(""))){
MainData data = new MainData();
data.setText(sText);
data.setText1(sText1);
database.maindao().insert(data);
mainEdit.setText("");
mainEdit1.setText("");
DataArrayList.clear();
DataArrayList.addAll(database.maindao().getAll());
adapter.notifyDataSetChanged();
}}
});
mainBtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
database.maindao().reset(DataArrayList);
DataArrayList.clear();
DataArrayList.addAll(database.maindao().getAll());
adapter.notifyDataSetChanged();
}
});
}
}
Step-2: Create Main Activity.XML, code is mention below :<?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="wrap_content"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/mainEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Text"
android:textSize="20sp">
</EditText>
<EditText
android:id="@+id/mainEdit1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Text1"
android:textSize="20sp">
</EditText>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/mainBtn1"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"
android:textSize="20sp">
</Button>
<Button
android:id="@+id/mainBtn2"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
android:textSize="20sp">
</Button>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:id="@+id/recyclerView"
android:layout_height="wrap_content"
>
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>Step-3: Create @Database entities , code is mention below :@Database(entities = {MainData.class}, version = 1)
public abstract class RoomDb extends RoomDatabase {
private static RoomDb database;
private static String DATABASE_NAME = "database";
public synchronized static RoomDb getInstance(Context context){
if(database==null){
database = Room.databaseBuilder(context.getApplicationContext()
,RoomDb.class,DATABASE_NAME)
.allowMainThreadQueries()
.fallbackToDestructiveMigration()
.build();
}
return database;
}
public abstract MainDao maindao();
}Step-4: Create @Entity , code is mention below :
Entity Representation of table and columns become very easy. you have to annotate “@Entity” to a class and the name of the class becomes table name and, data members become the name of the columns. “@Entity” class represents an entity in a table.
@Entity(tableName = "Company")
public class MainData implements Serializable {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getText1() {
return text1;
}
public void setText1(String text1) {
this.text1 = text1;
}
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "text")
private String text;
@ColumnInfo(name = "text1")
private String text1;
}Step-5: Create @Dao , code is mention below :
@Dao
public interface MainDao {
@Query("SELECT * FROM Company")
List<MainData> getAll();
@Insert
void insert(MainData mainData);
@Delete
void delete( MainData mainData);
@Delete
void reset(List<MainData> mainData);
@Query("UPDATE Company SET text = :sText,text1 = :sText1 WHERE ID = :sID")
void update(int sID,String sText,String sText1);
}Step-6: Create Adapter , code is mention below :
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private List<MainData> DataArrayList;
private Activity context;
public Adapter(List<MainData> dataArrayList, Activity context) {
DataArrayList = dataArrayList;
this.context = context;
}
private RoomDb database;
@NonNull
@Override
public Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext())
.inflate(R.layout.roomdatabase4,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
MainData data = DataArrayList.get(position);
database = RoomDb.getInstance(context);
holder.text.setText(data.getText());
holder.text1.setText(data.getText1());
holder.image1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainData d = DataArrayList.get(holder.getAdapterPosition());
int sId = d.getId();
int sId1=d.getId();
String sText = d.getText();
String sText1=d.getText1();
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog4);
int width = WindowManager.LayoutParams.WRAP_CONTENT;
int height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setLayout(width, height);
dialog.show();
EditText editText = dialog.findViewById(R.id.Edittext);
EditText editText1 = dialog.findViewById(R.id.Edittext1);
Button btUpdate = dialog.findViewById(R.id.bt1);
editText.setText(sText);
editText1.setText(sText1);
btUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
String uText = editText.getText().toString().trim();
String tText=editText1.getText().toString().trim();
database.maindao().update(sId, uText,tText);
DataArrayList.clear();
DataArrayList.addAll(database.maindao().getAll());
notifyDataSetChanged();
}
});
}
});
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainData d = DataArrayList.get(holder.getAdapterPosition());
database.maindao().delete(d);
int position = holder.getAdapterPosition();
DataArrayList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position,DataArrayList.size());
}
});
}
@Override
public int getItemCount() {
return DataArrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView text,text1;
ImageView image,image1;
public ViewHolder(@NonNull View itemView) {
super(itemView);
text=itemView.findViewById(R.id.text);
text1=itemView.findViewById(R.id.text1);
image=itemView.findViewById(R.id.image);
image1=itemView.findViewById(R.id.image1);
}
}
}Step-7: Create Activity Main XML , code is mention below :
<?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="wrap_content"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/mainEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Text"
android:textSize="20sp">
</EditText>
<EditText
android:id="@+id/mainEdit1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Text1"
android:textSize="20sp">
</EditText>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/mainBtn1"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"
android:textSize="20sp">
</Button>
<Button
android:id="@+id/mainBtn2"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset"
android:textSize="20sp">
</Button>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:id="@+id/recyclerView"
android:layout_height="wrap_content"
>
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>Step-8: Create Dialog Box. XML when edit any code , code is mention below :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/Edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/enter_text"
android:text="Enter Text"
android:textSize="20sp">
</EditText>
<EditText
android:id="@+id/Edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/enter_text1"
android:text="Enter Text1"
android:textSize="20sp">
</EditText>
<Button
android:id="@+id/bt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update"
android:textSize="20sp">
</Button>
</LinearLayout>Step-9: Create Layout for Adapter where Adapter Inflate that Layout :.
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="30dp"
android:layout_margin="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:orientation="horizontal"
android:background="@color/purple_200">
<LinearLayout
android:layout_width="240dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:padding="8dp"
android:textSize="20sp">
</TextView>
<TextView
android:id="@+id/text1"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:padding="8dp"
android:textSize="20sp">
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:src="@drawable/ic_baseline_delete_24">
</ImageView>
<ImageView
android:id="@+id/image1"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:src="@drawable/ic_baseline_edit_24">
</ImageView>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>Step-10: put dependencies , code is mention below :
dependencies {
def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
// optional - RxJava2 support for Room
implementation "androidx.room:room-rxjava2:$room_version"
// optional - RxJava3 support for Room
implementation "androidx.room:room-rxjava3:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "androidx.room:room-guava:$room_version"
// optional - Test helpers
testImplementation "androidx.room:room-testing:$room_version"
// optional - Paging 3 Integration
implementation "androidx.room:room-paging:2.4.0-beta01"
}***************new project***********************************
2-below we take 3 failed so we create 3 faild on @entity,how much failed we take according to that failed we create model class :package com.kazimasum.cartdemo;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class Product
{
@PrimaryKey(autoGenerate = true)
public int pid;
@ColumnInfo(name = "pname")
public String pname;
@ColumnInfo(name = "price")
public int price;
@ColumnInfo(name = "qnt")
public int qnt;
public Product(int pid, String pname, int price, int qnt) {
this.pid = pid;
this.pname = pname;
this.price = price;
this.qnt = qnt;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getQnt() {
return qnt;
}
public void setQnt(int qnt) {
this.qnt = qnt;
}
}@Dao Iterface :
package com.kazimasum.cartdemo;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import java.util.List;
@Dao
public interface ProductDao
{
@Insert
void insertrecord(Product product);
@Query("SELECT EXISTS(SELECT * FROM Product WHERE pid = :productid)")
Boolean is_exist(int productid);
@Query("SELECT * FROM Product")
List<Product> getallproduct();
@Query("DELETE FROM Product WHERE pid = :id")
void deleteById(int id);
}@Database abstract class :
package com.kazimasum.cartdemo;
import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
@Database(entities = {Product.class}, version = 1)
public abstract class RoomDb extends RoomDatabase {
private static RoomDb database;
private static String DATABASE_NAME = "database";
public synchronized static RoomDb getInstance(Context context){
if(database==null){
database = Room.databaseBuilder(context.getApplicationContext()
,RoomDb.class,DATABASE_NAME)
.allowMainThreadQueries()
.fallbackToDestructiveMigration()
.build();
}
return database;
}
public abstract ProductDao productDao();
}Adapter class :
package com.kazimasum.cartdemo;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class myadapter extends RecyclerView.Adapter<myadapter.myviewholder>
{
List<Product> products;
TextView rateview;
Context context;
public myadapter(List<Product> products, TextView rateview) {
this.products = products;
this.rateview= rateview;
}
private RoomDb database;
@NonNull
@NotNull
@Override
public myviewholder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.singlerowdesign,parent,false);
return new myviewholder(view);
}
@Override
public void onBindViewHolder(@NonNull @NotNull myadapter.myviewholder holder, @SuppressLint("RecyclerView") int position) {
holder.recid.setText(String.valueOf(products.get(position).getPid()));
database = RoomDb.getInstance(context);
holder.recpname.setText(products.get(position).getPname());
holder.recpprice.setText(String.valueOf(products.get(position).getPrice()));
holder.recqnt.setText(String.valueOf(products.get(position).getQnt()));
holder.delbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
database.productDao().deleteById(products.get(position).getPid());
products.remove(position);
notifyItemRemoved(position);
updateprice();
}
});
holder.incr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int qnt=products.get(position).getQnt();
qnt++;
products.get(position).setQnt(qnt);
notifyDataSetChanged();
updateprice();
}
});
holder.decr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int qnt=products.get(position).getQnt();
qnt--;
products.get(position).setQnt(qnt);
notifyDataSetChanged();
updateprice();
}
});
}
@Override
public int getItemCount() {
return products.size();
}
class myviewholder extends RecyclerView.ViewHolder
{
TextView recid,recpname,recqnt, recpprice;
ImageButton delbtn;
ImageView incr,decr;
public myviewholder(@NonNull @NotNull View itemView) {
super(itemView);
recid=itemView.findViewById(R.id.recid);
recpname=itemView.findViewById(R.id.recpname);
recpprice=itemView.findViewById(R.id.recpprice);
recqnt=itemView.findViewById(R.id.recqnt);
delbtn=itemView.findViewById(R.id.delbtn);
incr=itemView.findViewById(R.id.incbtn);
decr=itemView.findViewById(R.id.decbtn);
}
}
public void updateprice()
{
int sum=0,i;
for(i=0;i< products.size();i++)
sum=sum+(products.get(i).getPrice()*products.get(i).getQnt());
rateview.setText("Total Amount : INR "+sum);
}
}Activity Main.java :
package com.kazimasum.cartdemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity
{
EditText t1,t2,t3,t4;
Button b1,b2;
TextView lbl;
RoomDb database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = RoomDb.getInstance(this);
t1=findViewById(R.id.t1);
t2=findViewById(R.id.t2);
t3=findViewById(R.id.t3);
t4=findViewById(R.id.t4);
b1=findViewById(R.id.b1);
b2=findViewById(R.id.b2);
lbl=findViewById(R.id.lbl);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String num=String.valueOf(t1.getText());
Boolean check=database.productDao().is_exist(Integer.parseInt(num));
if(check==false)
{
int pid=Integer.parseInt(t1.getText().toString());
String pname=t2.getText().toString();
int price=Integer.parseInt(t3.getText().toString());
int qnt=Integer.parseInt(t4.getText().toString());
database.productDao().insertrecord(new Product(pid,pname,price,qnt));
t1.setText("");
t2.setText("");
t3.setText("");
t4.setText("");
lbl.setText("Product Inserted Successfully");
}
else
{
t1.setText("");
t2.setText("");
t3.setText("");
t4.setText("");
lbl.setText("Product Already in Cart");
}
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(),cartdata.class));
}
});
}
}Cart Data Activity for show Data on Screen: cartData.java code:package com.kazimasum.cartdemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;
import android.os.Bundle;
import android.widget.TextView;
import java.util.List;
public class cartdata extends AppCompatActivity {
RecyclerView recview;
TextView rateview;
RoomDb database;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cartdata);
getSupportActionBar().hide();
database = RoomDb.getInstance(this);
rateview=findViewById(R.id.rateview);
getroomdata();
}
public void getroomdata()
{
recview=findViewById(R.id.recview);
recview.setLayoutManager(new LinearLayoutManager(this));
List<Product> products=database.productDao().getallproduct();
myadapter adapter=new myadapter(products, rateview);
recview.setAdapter(adapter);
int sum=0,i;
for(i=0;i< products.size();i++)
sum=sum+(products.get(i).getPrice()*products.get(i).getQnt());
rateview.setText("Total Amount : INR "+sum);
}
}All XML File : 1-Activity cartdata.XML Code :<?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=".cartdata">
<LinearLayout
android:id="@+id/headerpanel"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/design_default_color_error"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:gravity="center"
android:text="PID"
android:textColor="#fff"
android:textSize="18dp"
android:textStyle="bold" />
<TextView
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text="Product"
android:textColor="#fff"
android:textSize="18dp"
android:textStyle="bold" />
<TextView
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text="Price"
android:textColor="#fff"
android:textSize="18dp"
android:textStyle="bold" />
<TextView
android:layout_width="45dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text="Qnt"
android:textColor="#fff"
android:textSize="18dp"
android:textStyle="bold" />
</LinearLayout>
<ScrollView
android:id="@+id/scroller"
android:layout_width="match_parent"
android:layout_height="600dp"
android:layout_below="@+id/headerpanel">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</ScrollView>
<LinearLayout
android:id="@+id/InnerRelativeLayout"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="50dp"
android:paddingLeft="5dp"
android:background="@color/design_default_color_error"
android:layout_alignParentBottom="true"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:textColor="#ffff"
android:id="@+id/rateview"
android:textSize="18dp"
android:layout_marginRight="10dp"
android:text="Total Amount : INR 600"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@android:color/white"
android:text="Checkout"
android:padding="10dp"
android:textColor="#000"/>
</LinearLayout>
</RelativeLayout>Activity Main.XMl code :
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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"
android:gravity="center"
tools:context=".MainActivity">
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:id="@+id/t1"
android:hint="Product ID"/>
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/t2"
android:layout_marginTop="30dp"
android:hint="Product Name"/>
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/t3"
android:layout_marginTop="30dp"
android:hint="Product Price"/>
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/t4"
android:layout_marginTop="30dp"
android:hint="Product Quantity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save to Room"
android:id="@+id/b1"
android:padding="10dp"
android:layout_marginTop="30dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check Cart"
android:id="@+id/b2"
android:padding="10dp"
android:layout_marginTop="30dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lbl"
android:layout_marginTop="20dp"
android:text=""/>
</androidx.appcompat.widget.LinearLayoutCompat>Adapter Layout code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_margin="10dp"
app:cardCornerRadius="8dp"
android:padding="8dp"
android:elevation="10dp"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
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:orientation="horizontal">
<TextView
android:id="@+id/recid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:gravity="center"
android:text="1"
android:textSize="25dp" />
<TextView
android:id="@+id/recpname"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="White Shoes"
android:textSize="25dp" />
<TextView
android:id="@+id/recpprice"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="250"
android:textSize="25dp" />
<TextView
android:id="@+id/recqnt"
android:layout_width="45dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="11"
android:textSize="25dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/incbtn"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_weight="0.1"
android:layout_marginLeft="8dp"
android:layout_gravity="center"
android:background="#ffff"
android:src="@drawable/incr" />
<ImageView
android:id="@+id/decbtn"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_weight="0.1"
android:layout_marginLeft="8dp"
android:layout_gravity="center"
android:src="@drawable/decr" />
<ImageButton
android:id="@+id/delbtn"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_gravity="end"
android:background="#ffff"
android:src="@drawable/delete" />
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>