D
I
S
U
S
U
N
OLEH:
NAMA : JUSNAWIAH
NIM : 42621012
KELAS : 2A TEKNIK MULTIMEDIA DAN JARINGAN
B. DASAR TEORI
Firebase merupakan penyimpanan data di luar Android yang dapat digunakan untuk
penyimpanan dan berbagai data. Penyimpanan dan sinkronisasi data dengan Firebase
Cloud Database dapat diakses melalui https://firebase.google.com. Data akan
disinkronisasi di semua client, dan akan tetap tersedia saat aplikasi offline. Firebase dapat
dikoneksikan dengan aplikasi untuk berbagi data dan dapat menyimpandata pada cloud.
Data pada Firebase disimpan dalam bentuk JSON.Kelebihan menggunakan Firebase
salah satunya adalah data akandisinkronisasi secara realtime setiap client terkoneksi.
Kali ini kita akan mencoba untuk membuat sebuah project aplikasi
android sederhana untuk operasi CRUD (Create, Read, Update,
Delete) dengan menggunakan database NoSQL Firebase. Mengapa
Firebase? Karena Firebase dapat membantu kita untuk membangun
aplikasi mobile secara cepat, tanpa perlu melakukan pengaturan
infrastruktur server.
Firebase juga mendukung pengembangan aplikasi iOS, android, web, Unity, dan C++.
Salah satu fitur yang dapat kitamanfaatkan adalah Realtime Database. Firebase Realtime
Database dapat kita gunakan untuk penyimpanan dan sinkronisasi data aplikasi dalam
satuan milidetik. Pembuatan autentikasi pengguna juga cukup sederhana dan aman.
Untuk dapat menggunakan layanan Realtime Database maka dapat login menggunakan
akun gmail ke http://console.firebase.google.com, selanjutnya klik pada Add Project.
C. PERCOBAAN
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="ermaweb.com.example.myapplication.MainActivity">
<EditText
android:id="@+id/editAgenda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Tulis agenda disini" />
<Button
android:id="@+id/buttonAgenda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="simpanAgenda"
android:text="Simpan" />
<ListView
android:id="@+id/listAgenda"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Agenda_list.xml
<?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">
<TextView
android:id="@+id/teksItem"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Agenda_update.xml
<?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/editAgenda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Edit agenda disini" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/buttonUpdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update" />
<Button
android:id="@+id/buttonDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete" />
</LinearLayout>
</LinearLayout>
MainActivity.java
package ermaweb.com.example.myapplication;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.List;
@Override
protected void onCreate(Bundle savedInstanceState) {
mFirebaseDatabase = FirebaseDatabase.getInstance();
mFirebaseReference = mFirebaseDatabase.getReference("agendas");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editAgenda = findViewById(R.id.editAgenda);
buttonSimpan = findViewById(R.id.buttonAgenda);
listAgenda = findViewById(R.id.listAgenda);
agendas = new ArrayList<>();
mFirebaseDatabase = FirebaseDatabase.getInstance();
mFirebaseReference = mFirebaseDatabase.getReference("agendas");
listAgenda.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Agenda agenda = agendas.get(position);
Intent intent = new Intent(getApplicationContext(), Agenda.class);
intent.putExtra(AGENDA_ID, agenda.getId());
intent.putExtra(AGENDA_ITEM, agenda.getItem());
startActivity(intent);
}
});
listAgenda.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long
id) {
Agenda agenda = agendas.get(position);
showUpdateDeleteDialog(agenda.getId(), agenda.getItem());
return true;
}
});
buttonSimpan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
simpanAgenda();
}
});
}
@Override
protected void onStart() {
super.onStart();
@Override
protected void onStop() {
super.onStop();
editText.setText(item);
dialogBuilder.setTitle("Update Agenda");
final AlertDialog b = dialogBuilder.create();
b.show();
buttonUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String updatedItem = editText.getText().toString().trim();
if (!TextUtils.isEmpty(updatedItem)) {
updateAgenda(id, updatedItem);
b.dismiss();
} else {
Toast.makeText(MainActivity.this, "Masukkan isi agenda",
Toast.LENGTH_SHORT).show();
}
}
});
buttonDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteAgenda(id);
b.dismiss();
}
});
}
android {
namespace 'ermaweb.com.example.myapplication'
compileSdk 33
defaultConfig {
applicationId "ermaweb.com.example.myapplication"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-
rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'com.google.firebase:firebase-database:18.0.2'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.firebase:firebase-database:20.2.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation platform('com.google.firebase:firebase-bom:32.1.1')
implementation 'com.google.firebase:firebase-analytics-ktx'
}
apply plugin: 'com.google.gms.google-services'
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
}
AgendaList.java
package ermaweb.com.example.myapplication;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.List;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listAgenda = inflater.inflate(R.layout.agenda_list, null, true);
TextView isiAgenda = listAgenda.findViewById(R.id.teksItem);
Agenda agenda = agendas.get(position);
isiAgenda.setText(agenda.getItem());
return listAgenda;
}
Agenda.java
package ermaweb.com.example.myapplication;
public class Agenda {
public String id, item;
public Agenda(){
}
public Agenda(String id, String item){
this.id = id;
this.item = item;
}
public String getId(){
return id;
}
public String getItem(){
return item;
}
}
Hasil
D. KESIMPULAN