You are on page 1of 30

Christine Mae T.

Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

menu_main (XML File)


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:id="@+id/action_search"
android:title="Search"
android:icon="@drawable/ic_baseline_search_24"
app:showAsAction="always"/>

<item android:id="@+id/action_settings"
android:title="Settings"/>
</menu>
activity_main (XML File)

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:padding="18dp"
android:background="@drawable/bluebg">

<EditText
android:id="@+id/titleEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@color/white"
android:hint="Title"
android:inputType="text"
android:padding="18dp"/>

<EditText
android:id="@+id/descriptionEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:background="@color/white"
android:gravity="start"
android:hint="Description"
android:inputType="textImeMultiLine|textCapSentences"
android:minHeight="250dp"
android:padding="18dp" />

<Button
android:id="@+id/saveBtn"
android:text="SAVE"
android:textColor="@color/white"
android:background="@drawable/button3"
android:layout_width="450dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"/>

<Button
android:id="@+id/listBtn"
android:text="SHOW LIST"
android:textColor="@color/white"
android:background="@drawable/button3"
android:layout_width="450dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"/>

<Button
android:id="@+id/printBtn"
android:text="PRINT"
android:textColor="@color/white"
android:background="@drawable/button3"
android:layout_width="450dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"/>

</LinearLayout>

activity_mobile (XML File)


<resources>
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
<string name="app_name">Exer4CionChristine</string>
<s<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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=".mobile">

<!--<com.hbb20.CountryCodePicker
android:id="@+id/ccp"
android:layout_width="115dp"
android:layout_height="43dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/t1"
app:layout_constraintTop_toTopOf="parent" />-->

<!--<EditText
android:id="@+id/t1"
android:layout_width="200dp"
android:layout_height="46dp"
android:ems="10"
android:hint="Enter Mobile"
android:inputType="textPersonName"
android:textSize="20sp"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="154dp"
tools:layout_editor_absoluteY="280dp" />-->

<ImageView
android:id="@+id/imageView"
android:layout_width="210dp"
android:layout_height="154dp"
android:src="@drawable/plane"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.597"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.075"
tools:ignore="MissingConstraints" />
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

<TextView
android:id="@+id/titleT1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OTP Verification"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.42" />

<com.hbb20.CountryCodePicker
android:id="@+id/ccp"
android:layout_width="115dp"
android:layout_height="43dp"
android:layout_marginStart="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/t1"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/t1"
android:layout_width="200dp"
android:layout_height="46dp"
android:ems="10"
android:hint="Enter Mobile"
android:inputType="textPersonName"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.805"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.502" />

<Button
android:id="@+id/btn1"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:layout_width="171dp"
android:layout_height="50dp"
android:background="@drawable/button4"
android:text="@string/btnOTP"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.669" />

</androidx.constraintlayout.widget.ConstraintLayout>

activity_otp (XML File)


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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=".mobile">

<!--<com.hbb20.CountryCodePicker
android:id="@+id/ccp"
android:layout_width="115dp"
android:layout_height="43dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/t1"
app:layout_constraintTop_toTopOf="parent" />-->

<!--<EditText
android:id="@+id/t1"
android:layout_width="200dp"
android:layout_height="46dp"
android:ems="10"
android:hint="Enter Mobile"
android:inputType="textPersonName"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:textSize="20sp"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="154dp"
tools:layout_editor_absoluteY="280dp" />-->

<ImageView
android:id="@+id/imageView"
android:layout_width="210dp"
android:layout_height="154dp"
android:src="@drawable/accept"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.073"
tools:ignore="MissingConstraints" />

<TextView
android:id="@+id/titleT1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OTP Verification"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.416" />

<EditText
android:id="@+id/t2"
android:layout_width="251dp"
android:layout_height="43dp"
android:ems="10"
android:hint="Enter OTP here"
android:inputType="textPersonName"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
app:layout_constraintHorizontal_bias="0.61"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.525" />

<Button
android:id="@+id/btn2"
android:layout_width="171dp"
android:layout_height="50dp"
android:background="@drawable/button4"
android:text="@string/btnVER"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.669" />

</androidx.constraintlayout.widget.ConstraintLayout>

activity_list (XML File)


<?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"
android:background="@drawable/bluebg"
tools:context=".ListActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_viewer"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_baseline_add_circle_24"
android:layout_margin="5dp"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
android:layout_alignParentRight="true"/>

</RelativeLayout>

model_layout (XML File)


<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="#2196F3"
app:cardCornerRadius="15dp"
app:cardElevation="3dp"
app:cardUseCompatPadding="true"
app:contentPadding="10dp">

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

<TextView
android:id="@+id/rTitleTv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title"
android:textColor="@color/material_dynamic_neutral99"
android:textSize="26sp" />

<TextView
android:id="@+id/rDescriptionTv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Description"
android:textColor="@color/material_dynamic_neutral99"
android:textSize="20sp" />
</LinearLayout>

</androidx.cardview.widget.CardView>
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
MainActivity (Java File)

package com.example.exer5cionchristine;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.FirebaseFirestore;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.HorizontalAlignment;
import com.itextpdf.layout.properties.TextAlignment;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class MainActivity extends AppCompatActivity {

ActionBar actionBar;
EditText mTitleEt, mDescriptionEt;
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Button mSaveBtn, mListBtn, printBtn;
ProgressDialog pd;
FirebaseFirestore db;
String pId, pTitle, pDescription;

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

printBtn = findViewById(R.id.printBtn);
mTitleEt = findViewById(R.id.titleEt);
actionBar = getSupportActionBar();
mDescriptionEt = findViewById(R.id.descriptionEt);
pd = new ProgressDialog(this);
db = FirebaseFirestore.getInstance();
mSaveBtn = findViewById(R.id.saveBtn);
mListBtn = findViewById(R.id.listBtn);
Bundle bundle = getIntent().getExtras();

if(bundle != null) {
actionBar.setTitle("Update File");
mSaveBtn.setText("Update");
pId = bundle.getString("pId");
pTitle = bundle.getString("pTitle");
pDescription = bundle.getString("pDescription");
mTitleEt.setText(pTitle);
mDescriptionEt.setText(pDescription);
}else{
actionBar.setTitle("Add File");
mSaveBtn.setText("Save");
}

//mSaveBtn
mSaveBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if (bundle != null) {
String id = pId;
String title = mTitleEt.getText().toString().trim();
String description = mDescriptionEt.getText().toString().trim();
updateData(id, title, description);
}else {
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
String title = mTitleEt.getText().toString().trim();
String description = mDescriptionEt.getText().toString().trim();
uploadData(title, description);
}
}
});

//mListBtn
mListBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
startActivity(new Intent(MainActivity.this, ListActivity.class));
finish();
}
});

//printBtn
printBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String title = mTitleEt.getText().toString();
String description = mDescriptionEt.getText().toString();
try{
createdPdf(title, description);
}catch (FileNotFoundException e){
e.printStackTrace();
}
}
});

//updateData
private void updateData(String id, String title, String description){
pd.setTitle("Updating File...");
pd.show();
db.collection("Documents").document(id)
.update("title", title, "search", title.toLowerCase(),"description", description)
.addOnCompleteListener(new OnCompleteListener<Void>(){
@Override
public void onComplete(@NonNull Task<Void> task){
pd.dismiss();
Toast toast = Toast.makeText(MainActivity.this,"File Updated
Successfully",Toast.LENGTH_SHORT);
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
toast.show();
}
}).addOnFailureListener(new OnFailureListener(){
@Override
public void onFailure(@NonNull Exception e) {
pd.dismiss();
Toast toast = Toast.makeText(MainActivity.this,"Error On Updating File",
Toast.LENGTH_SHORT);
}
});
}

//createdPDF
private void createdPdf(String title, String description) throws FileNotFoundException{
String pdfPath =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toS
tring();
File file = new File(pdfPath,"myPDF.pdf");
OutputStream outputStream = new FileOutputStream(file);

PdfWriter writer = new PdfWriter(file);


PdfDocument pdfDocument = new PdfDocument(writer);
Document document = new Document(pdfDocument);

pdfDocument.setDefaultPageSize(PageSize.A6);
document.setMargins(0,0,0,0);

Paragraph student = new


Paragraph("Students").setBold().setFontSize(24).setTextAlignment(TextAlignment.CENTER);
float[]width = {100f, 100f};
Table table = new Table(width);
table.setHorizontalAlignment(HorizontalAlignment.CENTER);

table.addCell(new Cell().add(new Paragraph("Title")));


table.addCell(new Cell().add(new Paragraph(title)));

table.addCell(new Cell().add(new Paragraph("Description")));


table.addCell(new Cell().add(new Paragraph(description)));

document.add(student);
document.add(table);
document.close();
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Toast.makeText(MainActivity.this,"PDF Created", Toast.LENGTH_LONG).show();
}

//uploadData
private void uploadData(String title, String description) {
pd.setTitle("Adding File ...");
pd.show();
String id=UUID.randomUUID().toString();
Map<String,Object> doc = new HashMap<>();
doc.put("id",id);
doc.put("title",title);
//
doc.put("search",title.toLowerCase());
doc.put("description",description);
db.collection("Documents").document(id).set(doc)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
pd.dismiss();
Toast toast = Toast.makeText(MainActivity.this, "File Added Successfully",
Toast.LENGTH_SHORT);
toast.show();
}
}).addOnFailureListener(new OnFailureListener(){
@Override
public void onFailure(@NonNull Exception e) {
pd.dismiss();
Toast toast = Toast.makeText(MainActivity.this, "Error On Adding File",
Toast.LENGTH_SHORT);
toast.show();
}
});
}
}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
mobile (Java File)
package com.example.exer5cionchristine;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

import com.hbb20.CountryCodePicker;

public class mobile extends AppCompatActivity {


CountryCodePicker ccp;
EditText t1;
Button btn1;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mobile);

t1 = (EditText)findViewById(R.id.t1);
ccp = (CountryCodePicker)findViewById(R.id.ccp);
ccp.registerCarrierNumberEditText(t1);
btn1 = (Button)findViewById(R.id.btn1);

btn1.setOnClickListener(view -> {
Intent intent = new Intent(mobile.this,otp.class);
intent.putExtra("mobile",ccp.getFullNumberWithPlus().replace("",""));
startActivity(intent);
});

}
}

otp (Java File)


package com.example.exer5cionchristine;

import android.content.Intent;
import android.os.Bundle;
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.firebase.FirebaseException;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;

import java.util.concurrent.TimeUnit;

public class otp extends AppCompatActivity {


EditText t2;
Button btn2;
String phonenumber;
String otpid;
FirebaseAuth mAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_otp);

phonenumber = getIntent().getStringExtra("mobile");
t2 = (EditText)findViewById(R.id.t2);
btn2 = (Button)findViewById(R.id.btn2);
mAuth = FirebaseAuth.getInstance();

initiateotp();

btn2.setOnClickListener(view -> {
if(t2.getText().toString().isEmpty())
Toast.makeText(getApplicationContext(),"Blank field can not be
processed",Toast.LENGTH_LONG).show();
else if(t2.getText().toString().length()!=6)
Toast.makeText(getApplicationContext(),"Invalid
OTP",Toast.LENGTH_LONG).show();
else {
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(otpid,
t2.getText().toString());
signInWithPhoneAuthCredential(credential);
}
});

private void initiateotp() {

PhoneAuthProvider.getInstance().verifyPhoneNumber(
phonenumber,
60,
TimeUnit.SECONDS,
this,
new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken
forceResendingToken) {
otpid=s;
}

@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
signInWithPhoneAuthCredential(phoneAuthCredential);
}

@Override
public void onVerificationFailed(@NonNull FirebaseException e) {

Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
}); //OnVerificationStateChangedCallbacks

}
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
startActivity(new Intent(otp.this, ListActivity.class));
finish();
} else {
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Toast.makeText(getApplicationContext(), "Signing Code Error",
Toast.LENGTH_LONG).show();
}
});
}

ListActivity (Java File)


package com.example.exer5cionchristine;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.SearchView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.MenuItemCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QuerySnapshot;

import java.util.ArrayList;
import java.util.List;

public class ListActivity extends AppCompatActivity{


Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
List<Model> modelList = new ArrayList<>();
RecyclerView mRecyclerView;
RecyclerView.LayoutManager layoutManager;

FloatingActionButton mAddBtn;

FirebaseFirestore db = FirebaseFirestore.getInstance();
CustomAdapter adapter;
ProgressDialog pd;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("List of File");
mAddBtn = findViewById(R.id.addBtn);
db = FirebaseFirestore.getInstance();
mRecyclerView = findViewById(R.id.recycler_viewer);
mRecyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(layoutManager);

pd = new ProgressDialog(this);
showData();
mAddBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ListActivity.this,MainActivity.class));
finish();
}
});
}

private void showData() {


pd.setTitle("Loading Data...");
pd.show();
db.collection("Documents").get().addOnCompleteListener(new
OnCompleteListener<QuerySnapshot>() {

@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
modelList.clear();
pd.dismiss();
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
for(DocumentSnapshot doc: task.getResult()){
Model model = new Model(doc.getString("id"),
doc.getString("title"),
doc.getString("description"));
modelList.add(model);
}
adapter = new CustomAdapter(ListActivity.this,modelList);
mRecyclerView.setAdapter(adapter);
}
}).addOnFailureListener(new OnFailureListener(){
@Override
public void onFailure(@NonNull Exception e) {
pd.dismiss();
Toast.makeText(ListActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}

public void deleteData(int index){


pd.setTitle("Deleting Data...");
pd.show();
db.collection("Documents").document(modelList.get(index).getId())
.delete()
.addOnCompleteListener(new OnCompleteListener<Void>(){
@Override
public void onComplete(@NonNull Task<Void> task) {
pd.dismiss();
Toast.makeText(ListActivity.this,"Deleted", Toast.LENGTH_SHORT);
showData();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
pd.dismiss();
Toast.makeText(ListActivity.this,e.getMessage(),
Toast.LENGTH_SHORT).show();
}
});
}

private void searchData(String query) {


pd.setTitle("Searching...");
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
pd.show();
db.collection("Documents").whereEqualTo("search",query.toLowerCase())
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
modelList.clear();
pd.dismiss();
for(DocumentSnapshot doc: task.getResult()){
Model model = new Model (doc.getString("id"),
doc.getString("title"),
doc.getString("description"));
modelList.add(model);
}
adapter = new CustomAdapter(ListActivity.this,modelList);
mRecyclerView.setAdapter(adapter);

}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
pd.dismiss();
Toast.makeText(ListActivity.this,
e.getMessage(),Toast.LENGTH_LONG).show();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
//
getMenuInflater().inflate(R.menu.menu_main,menu);

//
MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {

//
searchData(query);
return false;
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
}

@Override
public boolean onQueryTextChange(String newText) {

//
return false;
}
});

return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
//
if(item.getItemId()==R.id.action_settings){
Toast.makeText(this, "Settings", Toast.LENGTH_LONG).show();
}
return super.onOptionsItemSelected(item);
}
}

CustomAdapter (Java File)


package com.example.exer5cionchristine;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

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

import java.util.List;
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
public class CustomAdapter extends RecyclerView.Adapter<ViewHolder> {

ListActivity listActivity;
List<Model> modelList;
Context context;

public CustomAdapter(ListActivity listActivity, List<Model> modelList){


this.listActivity = listActivity;
this.modelList = modelList;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View itemView =
LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.model_layout, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(itemView);
viewHolder.setOnClickListener(new ViewHolder.ClickListener(){
@Override
public void onItemClick(View view, int position) {
String title = modelList.get(position).getTitle();
String desc = modelList.get(position).getDescription();
Toast.makeText(listActivity, title+ "\n", Toast.LENGTH_SHORT).show();
}

@Override
public void onItemLongClick(View view, int position) {

AlertDialog.Builder builder = new AlertDialog.Builder(listActivity);


String[] options = {"Update/Print", "Delete"};
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
if (which == 0){
String id = modelList.get(position).getId();
String title = modelList.get(position).getTitle();
String description = modelList.get(position).getDescription();

Intent intent = new Intent(listActivity, MainActivity.class);


intent.putExtra("pId", id);
intent.putExtra("pTitle", title);
intent.putExtra("pDescription", description);
listActivity.startActivity(intent);
}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
if (which == 1){
listActivity.deleteData(position);
}

}
}).create().show();
}
});
return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.mTitleTv.setText(modelList.get(i).getTitle());
viewHolder.mDescriptionTv.setText(modelList.get(i).getDescription());
}

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

ViewHolder (Java File)


package com.example.exer5cionchristine;

import android.view.View;
import android.widget.TextView;

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

public class ViewHolder extends RecyclerView.ViewHolder {


TextView mTitleTv, mDescriptionTv;
View mView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
mView = itemView;
itemView.setOnClickListener(v -> mClickListener.onItemClick(v, getAdapterPosition()));
itemView.setOnLongClickListener(v -> {
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
mClickListener.onItemLongClick(v, getAdapterPosition());
return true;
});
mTitleTv = itemView.findViewById(R.id.rTitleTv);
mDescriptionTv = itemView.findViewById(R.id.rDescriptionTv);

}
private ViewHolder.ClickListener mClickListener;
public interface ClickListener{
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public void setOnClickListener(ViewHolder.ClickListener clickListener){
mClickListener = clickListener;
}
}

Model (Java File)


package com.example.exer5cionchristine;

public class Model {


private String id,description,title;
public Model(){

}
public Model(String id, String title, String description) {
this.id = id;
this.title = title;
this.description = description;

public String getId() { return id; }

public void setId(String id){ this.id = id; }

public String getDescription() { return description; }

public void setDescription(String description) { this.description = description; }

public String getTitle() { return title; }


Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

public void setTitle(String title) { this.title = title; }

@Override
public String toString(){
return "Model{" +
"id='" + id + '\'' +
", description='" + description + '\'' +
", title='" + title + '\'' +
'}';
}

}
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

Screenshot (Output)
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales
Christine Mae T. Cion
MOBAPLAB
BSCS 3A Prof: Mr. Jefferson A. Costales

You might also like