You are on page 1of 12

Android manifest

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


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.windows10.recycleraldy">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity android:name=".MahasiswaActivity"
android:parentActivityName=".MainActivity" ></activity>
</application>

</manifest>

Mahasiswa java
package com.example.windows10.recycleraldy;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Mahasiswa extends ArrayList<Mahasiswa> {

private String id;


private String nama;
private String nim;
private String hp;

public Mahasiswa() {
}

public Mahasiswa(String id, String nama, String nim, String hp) {


this.id = id;
this.nama = nama;
this.nim = nim;
this.hp = hp;

public Mahasiswa(String nama, String nim, String hp) {


this.nama = nama;
this.nim = nim;
this.hp = hp;
}

public String getnama() {


return nama;
}

public void setnama(String nama) {


this.nama = nama;
}
// public String getId() {
// return id;
// }

public void setId(String id) {


this.id = id;
}
public String getnim() {
return nim;
}

public void setnim(String nim) {


this.nim = nim;
}

public String gethp() {


return hp;
}

public void sethp(String hp) {


this.hp = hp;
}
public Map<String, Object> toMap() {

HashMap<String, Object> result = new HashMap<>();


result.put("nama", this.nama);
result.put("nim", this.nim);
result.put("hp", this.hp);

return result;
}

public String getid() {


return id;
}
}

mahasiswaActivity java

package com.example.windows10.recycleraldy;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;

import java.util.Map;

public class MahasiswaActivity extends AppCompatActivity {


private static final String TAG = "AddMahasiswaActivity";

TextView edtnama;
TextView edtnim;
TextView edthp;
Button btAdd;

private FirebaseFirestore db;


String id = "";

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

edtnama = findViewById(R.id.edtnama);
edtnim = findViewById(R.id.edtnim);
edthp = findViewById(R.id.edthp);
btAdd = findViewById(R.id.btAdd);

db = FirebaseFirestore.getInstance();

Bundle bundle = getIntent().getExtras();


if (bundle != null) {
id = bundle.getString("UpdateMahasiswaid");

edtnama.setText(bundle.getString("Updatenama"));
edtnim.setText(bundle.getString("Updatenim"));
edthp.setText(bundle.getString("Updatehp"));
}

btAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nama = edtnama.getText().toString();
String nim = edtnim.getText().toString();
String hp = edthp.getText().toString();

if (nama.length() > 0) {
if (id.length() > 0) {
updateMahasiswa(id, nama, nim, hp);
} else {
addMahasiswa(nama, nim, hp);
}
}

finish();
}
});
}

private void updateMahasiswa(String id, String nama, String nim, String


hp) {
Map<String, Object> mahasiswa = (new Mahasiswa(id, nama, nim,
hp)).toMap();

db.collection("mahasiswa")
.document(id)
.set(mahasiswa)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.e(TAG, "Mahasiswa document update
successful!");
Toast.makeText(getApplicationContext(), "Mahasiswa
has been updated!", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Error adding Mahasiswa document", e);
Toast.makeText(getApplicationContext(), "Mahasiswa
could not be updated!", Toast.LENGTH_SHORT).show();
}
});
}

private void addMahasiswa(String nama, String nim, String hp) {


Map<String, Object> mahasiswa = new Mahasiswa(nama, nim,
hp).toMap();

db.collection("mahasiswa")
.add(mahasiswa)
.addOnSuccessListener(new
OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference
documentReference) {
Log.e(TAG, "DocumentSnapshot written with ID: " +
documentReference.getId());
Toast.makeText(getApplicationContext(), "Mahasiswa
has been added!", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Error adding Mahasiswa document", e);
Toast.makeText(getApplicationContext(), "Mahasiswa
could not be added!", Toast.LENGTH_SHORT).show();
}
});
}

mahasiswa Adapter java


package com.example.windows10.recycleraldy;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.FirebaseFirestore;

import java.util.ArrayList;

public class MahasiswaAdapter extends


RecyclerView.Adapter<MahasiswaAdapter.MahasiswaViewHolder> {

private ArrayList<Mahasiswa> dataList;


private Context context;
private FirebaseFirestore db;

public MahasiswaAdapter(ArrayList<Mahasiswa> dataList, Context context,


FirebaseFirestore db) {
this.dataList = dataList;
this.context = context;
this.db = db;
}

@Override
public MahasiswaViewHolder onCreateViewHolder(ViewGroup parent, int
viewType) {
LayoutInflater layoutInflater =
LayoutInflater.from(parent.getContext());
View view = layoutInflater.inflate(R.layout.row_mahasiswa, parent,
false);
return new MahasiswaViewHolder(view);
}

@Override
public void onBindViewHolder(MahasiswaViewHolder holder, final int
position) {
final int itemPosition = position;
final Mahasiswa data = dataList.get(itemPosition);
holder.txtNama.setText(dataList.get(position).getnama());
holder.txtNpm.setText(dataList.get(position).getnim());
holder.txtNoHp.setText(dataList.get(position).gethp());
holder.edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View itemView) {
updateMahasiswa(data);
}
});
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteMahasiswa(data.getid(), itemPosition);
}
});

}
// @Override
// public int getItemCount() {
// return (dataList != null) ? dataList.size() : 0;
// }
@Override
public int getItemCount() {
return dataList.size();
}

public class MahasiswaViewHolder extends RecyclerView.ViewHolder{


private TextView txtNama;
private TextView txtNpm;
private TextView txtNoHp;
private ImageView edit;
private ImageView delete;

public MahasiswaViewHolder(View itemView) {


super(itemView);
txtNama = (TextView)
itemView.findViewById(R.id.txt_nama_mahasiswa);
txtNpm = (TextView)
itemView.findViewById(R.id.txt_npm_mahasiswa);
txtNoHp = (TextView)
itemView.findViewById(R.id.txt_nohp_mahasiswa);
edit = (ImageView) itemView.findViewById(R.id.ivEdit);
delete = (ImageView) itemView.findViewById(R.id.ivDelete);
}
}

private void updateMahasiswa(Mahasiswa data) {


Intent intent = new Intent(context, MahasiswaActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("UpdateMahasiswaid", data.getid());
intent.putExtra("Updatenama", data.getnama());
intent.putExtra("Updatenim", data.getnim());
intent.putExtra("Updatehp", data.gethp());
context.startActivity(intent);
}

private void deleteMahasiswa(String id, final int position) {


db.collection("mahasisws")
.document(id)
.delete()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
dataList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, dataList.size());
Toast.makeText(context, "Mahasiswa has been
deleted!", Toast.LENGTH_SHORT).show();
}
});
}
}

menu.xml

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


<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:id="@+id/addMahasiswa"
android:icon="@drawable/ic_add"
android:title="Add"
app:showAsAction="ifRoom" />
</menu>

Main activity

package com.example.windows10.recycleraldy;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import com.google.firebase.firestore.ListenerRegistration;
import com.google.firebase.firestore.QuerySnapshot;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

private RecyclerView recyclerView;


private MahasiswaAdapter adapter;
private ArrayList<Mahasiswa> mahasiswaArrayList;
private FirebaseFirestore db;
private ListenerRegistration firestoreListener;

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

//inisiasi firestore intance


this.db= FirebaseFirestore.getInstance();

//inisiasi Array list


this.mahasiswaArrayList = new ArrayList<>();

addData();
firestoreListener = db.collection("mahasiswa")
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots,
FirebaseFirestoreException e) {
if (e != null) {
Log.e(TAG, "Listen failed!", e);
return;
}

adapter = new MahasiswaAdapter(mahasiswaArrayList,


getApplicationContext(), db);
recyclerView.setAdapter(adapter);

}
});

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

RecyclerView.LayoutManager layoutManager = new


LinearLayoutManager(MainActivity.this);

recyclerView.setLayoutManager(layoutManager);

@Override
protected void onDestroy() {
super.onDestroy();
firestoreListener.remove();
}
void addData(){
//fetch data from firebase
db.collection("mahasiswa")
.get()
.addOnCompleteListener(new
OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot>
task) {
if (task.isSuccessful()) {
//clear array list
mahasiswaArrayList.clear();
//iterasi pada hasil query
for (DocumentSnapshot document :
task.getResult()) {
//menambahkan data ke arraylist
mahasiswaArrayList.add(new Mahasiswa(
document.getId(),
document.getString("nama"),
document.getString("nim"),
document.getString("hp")
));

}
//notify adapter bahwa data sudah berubah
adapter.notifyDataSetChanged();
} else {
Log.w( TAG, "Error getting documents.",
task.getException());
}
}
});

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

return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item != null) {
if (item.getItemId() == R.id.addMahasiswa) {
Intent intent = new Intent(this, MahasiswaActivity.class);
startActivity(intent);
}
}

return super.onOptionsItemSelected(item);

}
}

activity mahasiswa .xml

<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="15dp">

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Nama" />

<EditText
android:id="@+id/edtnama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textPersonName" />

<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="NIM" />

<EditText
android:id="@+id/edtnim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textPersonName" />

<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="HP" />

<EditText
android:id="@+id/edthp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text|textPersonName" />

<Button
android:id="@+id/btAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Add" />

<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:srcCompat="@drawable/aldy" />
</LinearLayout>

Activity main . xml

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


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true" />

</RelativeLayout>

Row mahasiswa .xml

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


<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="6dp"
card_view:cardElevation="3dp"
card_view:cardUseCompatPadding="true">

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dp">

<!-- TextView Nama Mahasiwa -->


<TextView
android:id="@+id/txt_nama_mahasiswa"
android:layout_width="289dp"
android:layout_height="wrap_content" />

<!-- TextView Npm Mahasiswa -->


<TextView
android:id="@+id/txt_npm_mahasiswa"
android:layout_width="289dp"
android:layout_height="wrap_content" />

<!-- TextView NoHp Mahasiswa -->


<TextView
android:id="@+id/txt_nohp_mahasiswa"
android:layout_width="289dp"
android:layout_height="wrap_content" />

</LinearLayout>
<LinearLayout
android:layout_width="48dp"
android:layout_height="66dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="300dp"
android:layout_marginTop="5dp"
android:orientation="vertical">

<ImageView
android:id="@+id/ivEdit"
android:layout_width="24dp"
android:layout_height="23dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:paddingLeft="5dp"
card_view:srcCompat="@drawable/ic_edit" />

<ImageView
android:id="@+id/ivDelete"
android:layout_width="24dp"
android:layout_height="23dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:paddingLeft="5dp"
card_view:srcCompat="@drawable/ic_delete" />
</LinearLayout>

</android.support.v7.widget.CardView>

You might also like