Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.venvw.firebasetest;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ListView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AlertDialog;
- import androidx.appcompat.app.AppCompatActivity;
- import com.google.firebase.database.ChildEventListener;
- 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.GenericTypeIndicator;
- import com.google.firebase.database.ValueEventListener;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.UUID;
- public class MainActivity extends AppCompatActivity {
- private EditText nameEditText;
- private EditText salaryEditText;
- private ListView workerListView;
- private DatabaseReference workersReference;
- private HashMap<String, Worker> workerHashMap;
- private List<Worker> workerList;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- nameEditText = findViewById(R.id.nameEditText);
- salaryEditText = findViewById(R.id.salaryEditText);
- Button addWorkerButton = findViewById(R.id.addWorkerButton);
- workerListView = findViewById(R.id.workerListView);
- addWorkerButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Worker worker = new Worker(
- UUID.randomUUID().toString(),
- nameEditText.getText().toString(),
- Integer.valueOf(salaryEditText.getText().toString())
- );
- workersReference.child(worker.getUuid()).setValue(worker);
- }
- });
- workerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- final String uuid = workerList.get(position).getUuid();
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
- builder.setTitle("Attention")
- .setMessage("Do you want to remove worker?")
- .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- workersReference.child(uuid).removeValue();
- }
- })
- .setNegativeButton("No", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- })
- .setOnDismissListener(new DialogInterface.OnDismissListener() {
- @Override
- public void onDismiss(DialogInterface dialog) {
- }
- })
- .create().show();
- }
- });
- FirebaseDatabase database = FirebaseDatabase.getInstance();
- workersReference = database.getReference("workers");
- workersReference.addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
- workerHashMap = dataSnapshot.getValue(new GenericTypeIndicator<HashMap<String, Worker>>() {});
- if(workerHashMap == null) {
- workerHashMap = new HashMap<>();
- }
- workerList = new ArrayList<Worker>();
- workerListView.setAdapter(new ArrayAdapter<>(getApplicationContext(),
- android.R.layout.simple_list_item_1, workerList));
- updateWorkerList();
- workersReference.addChildEventListener(new ChildEventListener() {
- @Override
- public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
- workerHashMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Worker.class));
- updateWorkerList();
- }
- @Override
- public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
- workerHashMap.remove(dataSnapshot.getKey());
- workerHashMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Worker.class));
- updateWorkerList();
- }
- @Override
- public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
- workerHashMap.remove(dataSnapshot.getKey());
- updateWorkerList();
- }
- @Override
- public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- Toast.makeText(getApplicationContext(), "Failed to load", Toast.LENGTH_LONG).show();
- }
- });
- }
- @Override
- public void onCancelled(@NonNull DatabaseError databaseError) {
- Toast.makeText(getApplicationContext(), "Failed to load", Toast.LENGTH_LONG).show();
- }
- });
- }
- private void updateWorkerList() {
- workerList.clear();
- if(workerHashMap != null && !workerHashMap.isEmpty()) {
- workerList.addAll(workerHashMap.values());
- }
- ((BaseAdapter) workerListView.getAdapter()).notifyDataSetChanged();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement