0% found this document useful (0 votes)
29 views20 pages

Application Submission

The document contains code for an Android mobile application that allows users to view and add books to a database. It includes code for various activities like the splash screen, main screen to view books, and an add activity to enter a new book. It uses concepts like intents, databases, recycler views and custom adapters.

Uploaded by

yunitmoradiya21
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views20 pages

Application Submission

The document contains code for an Android mobile application that allows users to view and add books to a database. It includes code for various activities like the splash screen, main screen to view books, and an add activity to enter a new book. It uses concepts like intents, databases, recycler views and custom adapters.

Uploaded by

yunitmoradiya21
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Application Submission

Book Application

Name Enrollment No.


Dhruv Dobariya 22SE02CE023
Yunit Moradiya 22SE02CE014

Subject:- Mobile Application development


Subject code:- SEIT2041
Faculty:- Mitul Sir
Splash Activity
package com.example.book_app2;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import
com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.util.ArrayList;

public class Splash extends AppCompatActivity {

RecyclerView recyclerView;
FloatingActionButton add_button;
ImageView empty_imageview;
TextView no_data;

MyDatabaseHelper myDB;
ArrayList<String> book_id, book_title, book_author, book_pages;
CustomAdapter customAdapter;

@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
add_button = findViewById(R.id.add_button);
empty_imageview = findViewById(R.id.empty_imageview);
no_data = findViewById(R.id.no_data);
add_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Splash.this, AddActivity.class);
startActivity(intent);
}
});

myDB = new MyDatabaseHelper(Splash.this);


book_id = new ArrayList<>();
book_title = new ArrayList<>();
book_author = new ArrayList<>();
book_pages = new ArrayList<>();

storeDataInArrays();

customAdapter = new CustomAdapter(Splash.this,this, book_id,


book_title, book_author,e
book_pages);
recyclerView.setAdapter(customAdapter);
recyclerView.setLayoutManager(new
LinearLayoutManager(Splash.this));

@Override
protected void onActivityResult(int requestCode, int resultCode,
@Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
recreate();
}
}

void storeDataInArrays(){
Cursor cursor = myDB.readAllData();
if(cursor.getCount() == 0){
empty_imageview.setVisibility(View.VISIBLE);
no_data.setVisibility(View.VISIBLE);
}else{
while (cursor.moveToNext()){
book_id.add(cursor.getString(0));
book_title.add(cursor.getString(1));
book_author.add(cursor.getString(2));
book_pages.add(cursor.getString(3));
}
empty_imageview.setVisibility(View.GONE);
no_data.setVisibility(View.GONE);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.delete_all){
confirmDialog();
}
return super.onOptionsItemSelected(item);
}

void confirmDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Delete All?");
builder.setMessage("Are you sure you want to delete all Data?");
builder.setPositiveButton("Yes", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
MyDatabaseHelper myDB = new MyDatabaseHelper(Splash.this);
myDB.deleteAllData();
//Refresh Activity
Intent intent = new Intent(Splash.this,
MainActivity.class);
startActivity(intent);
finish();
}
});
builder.setNegativeButton("No", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});
builder.create().show();
}
}
Output:
MainActivity file
package com.example.book_app2;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {

ImageView logo;

@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);

logo = findViewById(R.id.logogif);

Glide.with(this).load(R.drawable.gif2).into(logo);

new Handler().postDelayed(new Runnable() {


@Override
public void run() {
Intent I = new Intent(MainActivity.this, Splash.class);
startActivity(I);
finish();
}
} ,3000);
}
}
Output:
AddActivity
package com.example.book_app2;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import
com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.util.ArrayList;

public class Splash extends AppCompatActivity {

RecyclerView recyclerView;
FloatingActionButton add_button;
ImageView empty_imageview;
TextView no_data;

MyDatabaseHelper myDB;
ArrayList<String> book_id, book_title, book_author, book_pages;
CustomAdapter customAdapter;

@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

recyclerView = findViewById(R.id.recyclerView);
add_button = findViewById(R.id.add_button);
empty_imageview = findViewById(R.id.empty_imageview);
no_data = findViewById(R.id.no_data);
add_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Splash.this, AddActivity.class);
startActivity(intent);
}
});

myDB = new MyDatabaseHelper(Splash.this);


book_id = new ArrayList<>();
book_title = new ArrayList<>();
book_author = new ArrayList<>();
book_pages = new ArrayList<>();

storeDataInArrays();
customAdapter = new CustomAdapter(Splash.this,this, book_id,
book_title, book_author,
book_pages);
recyclerView.setAdapter(customAdapter);
recyclerView.setLayoutManager(new
LinearLayoutManager(Splash.this));

@Override
protected void onActivityResult(int requestCode, int resultCode,
@Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
recreate();
}
}

void storeDataInArrays(){
Cursor cursor = myDB.readAllData();
if(cursor.getCount() == 0){
empty_imageview.setVisibility(View.VISIBLE);
no_data.setVisibility(View.VISIBLE);
}else{
while (cursor.moveToNext()){
book_id.add(cursor.getString(0));
book_title.add(cursor.getString(1));
book_author.add(cursor.getString(2));
book_pages.add(cursor.getString(3));
}
empty_imageview.setVisibility(View.GONE);
no_data.setVisibility(View.GONE);
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_menu, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.delete_all){
confirmDialog();
}
return super.onOptionsItemSelected(item);
}

void confirmDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Delete All?");
builder.setMessage("Are you sure you want to delete all Data?");
builder.setPositiveButton("Yes", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
MyDatabaseHelper myDB = new MyDatabaseHelper(Splash.this);
myDB.deleteAllData();
//Refresh Activity
Intent intent = new Intent(Splash.this,
MainActivity.class);
startActivity(intent);
finish();
}
});
builder.setNegativeButton("No", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});
builder.create().show();
}
}
Output
UpdateActivity
package com.example.book_app2;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

public class UpdateActivity extends AppCompatActivity {

EditText title_input, author_input, pages_input;


Button update_button, delete_button;

String id, title, author, pages;


ImageView backbtn;

@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);

title_input = findViewById(R.id.title_input2);
author_input = findViewById(R.id.author_input2);
pages_input = findViewById(R.id.pages_input2);
update_button = findViewById(R.id.update_button);
delete_button = findViewById(R.id.delete_button);
backbtn = findViewById(R.id.backbtn);

backbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});

//First we call this


getAndSetIntentData();

//Set actionbar title after getAndSetIntentData method


ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setTitle(title);
}

update_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//And only then we call this
MyDatabaseHelper myDB = new
MyDatabaseHelper(UpdateActivity.this);
title = title_input.getText().toString().trim();
author = author_input.getText().toString().trim();
pages = pages_input.getText().toString().trim();
myDB.updateData(id, title, author, pages);
}
});
delete_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
confirmDialog();
}
});

void getAndSetIntentData(){
if(getIntent().hasExtra("id") && getIntent().hasExtra("title") &&
getIntent().hasExtra("author") &&
getIntent().hasExtra("pages")){
//Getting Data from Intent
id = getIntent().getStringExtra("id");
title = getIntent().getStringExtra("title");
author = getIntent().getStringExtra("author");
pages = getIntent().getStringExtra("pages");

//Setting Intent Data


title_input.setText(title);
author_input.setText(author);
pages_input.setText(pages);
Log.d("stev", title+" "+author+" "+pages);
}else{
Toast.makeText(this, "No data.", Toast.LENGTH_SHORT).show();
}
}

void confirmDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Delete " + title + " ?");
builder.setMessage("Are you sure you want to delete " + title + "
?");
builder.setPositiveButton("Yes", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
MyDatabaseHelper myDB = new
MyDatabaseHelper(UpdateActivity.this);
myDB.deleteOneRow(id);
finish();
}
});
builder.setNegativeButton("No", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});
builder.create().show();
}
}
Output
DatabaseHelperClass
package com.example.book_app2;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;

public class MyDatabaseHelper extends SQLiteOpenHelper {

Context context;

public MyDatabaseHelper(@Nullable Context context) {


super(context, "BookLibrary.db", null, 1);
this.context = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table my_library(_id INTEGER PRIMARY KEY
AUTOINCREMENT, book_title TEXT, book_author TEXT, book_pages INTEGER)");
}

// public void onCreate(SQLiteDatabase db) {


// String query = "CREATE TABLE " + "my_library" +
// " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+
// COLUMN_TITLE + " TEXT, " +
// COLUMN_AUTHOR + " TEXT, " +
// COLUMN_PAGES + " INTEGER);";
// db.execSQL(query);
// }
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS my_library");
}

public void addBook(String title, String author, int pages){


SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();

cv.put("book_title", title);
cv.put("book_author", author);
cv.put("book_pages", pages);
long result = db.insert("my_library",null, cv);
if(result == -1){
Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(context, "Added Successfully!",
Toast.LENGTH_SHORT).show();
}
}

public Cursor readAllData(){


String query = "SELECT * FROM my_library ";
SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = null;


if(db != null){
cursor = db.rawQuery(query, null);
}
return cursor;
}

void updateData(String row_id, String title, String author, String


pages){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("book_title", title);
cv.put("book_author", author);
cv.put("book_pages", pages);

long result = db.update("my_library", cv, "_id=?", new


String[]{row_id});
if(result == -1){
Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(context, "Updated Successfully!",
Toast.LENGTH_SHORT).show();
}

void deleteOneRow(String row_id){


SQLiteDatabase db = this.getWritableDatabase();
long result = db.delete("my_library", "_id=?", new
String[]{row_id});
if(result == -1){
Toast.makeText(context, "Failed to Delete.",
Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "Successfully Deleted.",
Toast.LENGTH_SHORT).show();
}
}

public void deleteAllData(){


SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM my_library");
}

CustomAdapter
package com.example.book_app2;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class CustomAdapter extends


RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

Context context;
Activity activity;
ArrayList book_id, book_title, book_author, book_pages;

public CustomAdapter(Activity activity, Context context, ArrayList


book_id, ArrayList book_title, ArrayList book_author,
ArrayList book_pages){
this.activity = activity;
this.context = context;
this.book_id = book_id;
this.book_title = book_title;
this.book_author = book_author;
this.book_pages = book_pages;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int
viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.my_row, parent, false);
return new MyViewHolder(view);
}

@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder,
@SuppressLint("RecyclerView") final int position) {
holder.book_id_txt.setText(String.valueOf(book_id.get(position)));

holder.book_title_txt.setText(String.valueOf(book_title.get(position)));

holder.book_author_txt.setText(String.valueOf(book_author.get(position)));

holder.book_pages_txt.setText(String.valueOf(book_pages.get(position)));
//Recyclerview onClickListener
holder.mainLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, UpdateActivity.class);
intent.putExtra("id",
String.valueOf(book_id.get(position)));
intent.putExtra("title",
String.valueOf(book_title.get(position)));
intent.putExtra("author",
String.valueOf(book_author.get(position)));
intent.putExtra("pages",
String.valueOf(book_pages.get(position)));
activity.startActivityForResult(intent, 1);
}
});

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

class MyViewHolder extends RecyclerView.ViewHolder {

TextView book_id_txt, book_title_txt, book_author_txt,


book_pages_txt;
LinearLayout mainLayout;

MyViewHolder(@NonNull View itemView) {


super(itemView);
book_id_txt = itemView.findViewById(R.id.book_id_txt);
book_title_txt = itemView.findViewById(R.id.book_title_txt);
book_author_txt = itemView.findViewById(R.id.book_author_txt);
book_pages_txt = itemView.findViewById(R.id.book_pages_txt);
mainLayout = itemView.findViewById(R.id.mainLayout);
//Animate Recyclerview
Animation translate_anim =
AnimationUtils.loadAnimation(context, R.anim.translate_anim);
mainLayout.setAnimation(translate_anim);
}

Thank you

You might also like