Professional Documents
Culture Documents
<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 Mahasiswa() {
}
return result;
}
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;
TextView edtnama;
TextView edtnim;
TextView edthp;
Button btAdd;
@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();
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();
}
});
}
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();
}
});
}
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();
}
});
}
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;
@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();
}
menu.xml
<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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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;
}
}
});
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);
}
}
<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>
<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>
<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">
</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>