Advertisement
Guest User

MainActivity.java

a guest
Sep 20th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.45 KB | None | 0 0
  1. package com.venvw.firebasetest;
  2.  
  3. import android.content.DialogInterface;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.AdapterView;
  7. import android.widget.ArrayAdapter;
  8. import android.widget.BaseAdapter;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.ListView;
  12. import android.widget.Toast;
  13.  
  14. import androidx.annotation.NonNull;
  15. import androidx.annotation.Nullable;
  16. import androidx.appcompat.app.AlertDialog;
  17. import androidx.appcompat.app.AppCompatActivity;
  18.  
  19. import com.google.firebase.database.ChildEventListener;
  20. import com.google.firebase.database.DataSnapshot;
  21. import com.google.firebase.database.DatabaseError;
  22. import com.google.firebase.database.DatabaseReference;
  23. import com.google.firebase.database.FirebaseDatabase;
  24. import com.google.firebase.database.GenericTypeIndicator;
  25. import com.google.firebase.database.ValueEventListener;
  26.  
  27. import java.util.ArrayList;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.UUID;
  31.  
  32. public class MainActivity extends AppCompatActivity {
  33.  
  34.     private EditText nameEditText;
  35.     private EditText salaryEditText;
  36.     private ListView workerListView;
  37.  
  38.     private DatabaseReference workersReference;
  39.     private HashMap<String, Worker> workerHashMap;
  40.     private List<Worker> workerList;
  41.  
  42.     @Override
  43.     protected void onCreate(Bundle savedInstanceState) {
  44.         super.onCreate(savedInstanceState);
  45.         setContentView(R.layout.activity_main);
  46.  
  47.         nameEditText            = findViewById(R.id.nameEditText);
  48.         salaryEditText          = findViewById(R.id.salaryEditText);
  49.         Button addWorkerButton  = findViewById(R.id.addWorkerButton);
  50.         workerListView          = findViewById(R.id.workerListView);
  51.  
  52.         addWorkerButton.setOnClickListener(new View.OnClickListener() {
  53.             @Override
  54.             public void onClick(View v) {
  55.                 Worker worker = new Worker(
  56.                         UUID.randomUUID().toString(),
  57.                         nameEditText.getText().toString(),
  58.                         Integer.valueOf(salaryEditText.getText().toString())
  59.                 );
  60.                 workersReference.child(worker.getUuid()).setValue(worker);
  61.             }
  62.         });
  63.  
  64.         workerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  65.             @Override
  66.             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  67.                 final String uuid = workerList.get(position).getUuid();
  68.                 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
  69.                 builder.setTitle("Attention")
  70.                         .setMessage("Do you want to remove worker?")
  71.                         .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
  72.                             @Override
  73.                             public void onClick(DialogInterface dialog, int which) {
  74.                                 workersReference.child(uuid).removeValue();
  75.                             }
  76.                         })
  77.                         .setNegativeButton("No", new DialogInterface.OnClickListener() {
  78.                             @Override
  79.                             public void onClick(DialogInterface dialog, int which) {
  80.                                 dialog.cancel();
  81.                             }
  82.                         })
  83.                         .setOnDismissListener(new DialogInterface.OnDismissListener() {
  84.                             @Override
  85.                             public void onDismiss(DialogInterface dialog) {
  86.  
  87.                             }
  88.                         })
  89.                         .create().show();
  90.             }
  91.         });
  92.  
  93.         FirebaseDatabase database = FirebaseDatabase.getInstance();
  94.         workersReference = database.getReference("workers");
  95.         workersReference.addListenerForSingleValueEvent(new ValueEventListener() {
  96.             @Override
  97.             public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  98.                 workerHashMap = dataSnapshot.getValue(new GenericTypeIndicator<HashMap<String, Worker>>() {});
  99.                 if(workerHashMap == null) {
  100.                     workerHashMap = new HashMap<>();
  101.                 }
  102.  
  103.                 workerList = new ArrayList<Worker>();
  104.                 workerListView.setAdapter(new ArrayAdapter<>(getApplicationContext(),
  105.                         android.R.layout.simple_list_item_1, workerList));
  106.                 updateWorkerList();
  107.  
  108.                 workersReference.addChildEventListener(new ChildEventListener() {
  109.                     @Override
  110.                     public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
  111.                         workerHashMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Worker.class));
  112.                         updateWorkerList();
  113.                     }
  114.  
  115.                     @Override
  116.                     public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
  117.                         workerHashMap.remove(dataSnapshot.getKey());
  118.                         workerHashMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Worker.class));
  119.                         updateWorkerList();
  120.                     }
  121.  
  122.                     @Override
  123.                     public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
  124.                         workerHashMap.remove(dataSnapshot.getKey());
  125.                         updateWorkerList();
  126.                     }
  127.  
  128.                     @Override
  129.                     public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
  130.  
  131.                     }
  132.  
  133.                     @Override
  134.                     public void onCancelled(@NonNull DatabaseError databaseError) {
  135.                         Toast.makeText(getApplicationContext(), "Failed to load", Toast.LENGTH_LONG).show();
  136.                     }
  137.                 });
  138.             }
  139.  
  140.             @Override
  141.             public void onCancelled(@NonNull DatabaseError databaseError) {
  142.                 Toast.makeText(getApplicationContext(), "Failed to load", Toast.LENGTH_LONG).show();
  143.             }
  144.         });
  145.     }
  146.  
  147.     private void updateWorkerList() {
  148.         workerList.clear();
  149.         if(workerHashMap != null && !workerHashMap.isEmpty()) {
  150.             workerList.addAll(workerHashMap.values());
  151.         }
  152.         ((BaseAdapter) workerListView.getAdapter()).notifyDataSetChanged();
  153.     }
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement