Advertisement
Guest User

TODO

a guest
Feb 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.69 KB | None | 0 0
  1. MainActivity.java
  2.  
  3. private RecyclerView mRecyclerView;
  4. private LinearLayoutManager mLinearLayoutManager;
  5. private RecyclerViewAdapter mRecyclerAdapter;
  6. private EditText mTaskEditText;
  7. private DatabaseReference databaseReference;
  8.  
  9. private List<Task> listOfTask;
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12.     super.onCreate(savedInstanceState);
  13.     setContentView(R.layout.activity_main);
  14.     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  15.     setSupportActionBar(toolbar);
  16.  
  17.     //Array list of all tasks
  18.     listOfTask = new ArrayList<>();
  19.     //get the database reference of FIREBASE
  20.     databaseReference = FirebaseDatabase.getInstance().getReference();
  21.     //this is where you can enter text of your task
  22.     mTaskEditText = (EditText) findViewById(R.id.add_task_box);
  23.  
  24.     //Initializing RecyclerView
  25.     mRecyclerView = (RecyclerView) findViewById(R.id.task_list);
  26.     //As we are showing data in Linear form we are using this
  27.     mLinearLayoutManager = new LinearLayoutManager(this);
  28.     mRecyclerView.setLayoutManager(mLinearLayoutManager);
  29.  
  30.     //When we add text of task, and press Button "Add task" triggers this
  31.     Button addTaskButton = (Button) findViewById(R.id.add_task_button);
  32.  
  33.     assert addTaskButton != null;
  34.     addTaskButton.setOnClickListener(new View.OnClickListener() {
  35.         @Override
  36.         public void onClick(View v) {
  37.             String enteredTask = mTaskEditText.getText().toString();
  38.             if(TextUtils.isEmpty(enteredTask)){
  39.                 Toast.makeText(MainActivity.this, "You must enter a task to Add it",Toast.LENGTH_LONG).show();
  40.                 return;
  41.             }
  42.             else{
  43.                 //If task text is valid Add it in our FIREBASE DATABASE.
  44.                 Task taskObject = new Task(enteredTask);
  45.  
  46.                 databaseReference.push().setValue(taskObject);
  47.                 mTaskEditText.setText("");
  48.             }
  49.  
  50.         }
  51.     });
  52.  
  53.  
  54.     //Database helper methods
  55.     databaseReference.addChildEventListener(new ChildEventListener() {
  56.         @Override
  57.         public void onChildAdded(DataSnapshot dataSnapshot, String s) {
  58.             //if added , show all
  59.             getAllTask(dataSnapshot);
  60.         }
  61.  
  62.         @Override
  63.         public void onChildChanged(DataSnapshot dataSnapshot, String s) {
  64.             //if changed show all
  65.             getAllTask(dataSnapshot);
  66.         }
  67.  
  68.         @Override
  69.         public void onChildRemoved(DataSnapshot dataSnapshot) {
  70.             //delete the task
  71.             taskDeletion(dataSnapshot);
  72.         }
  73.         @Override
  74.         public void onChildMoved(DataSnapshot dataSnapshot, String s) {
  75.  
  76.         }
  77.  
  78.         @Override
  79.         public void onCancelled(DatabaseError databaseError) {
  80.  
  81.         }
  82.     });
  83.  
  84. }
  85.  
  86. //On delete, remove the task from Firebase database - REAL TIME
  87. private void taskDeletion(DataSnapshot dataSnapshot) {
  88.  
  89.     for (DataSnapshot singleDataSnapshot : dataSnapshot.getChildren()) {
  90.  
  91.         String currentTask = singleDataSnapshot.getValue(String.class);
  92.         for (int i = 0; i < listOfTask.size(); i++) {
  93.             if (listOfTask.get(i).getTask().equals(currentTask)) {
  94.                 listOfTask.remove(i);
  95.             }
  96.  
  97.  
  98.         }
  99.  
  100.         //After removing , send notification to RecyclerView to remove the element
  101.         // AND re adapt it
  102.         mRecyclerAdapter.notifyDataSetChanged();
  103.         mRecyclerAdapter = new RecyclerViewAdapter(MainActivity.this, listOfTask);
  104.         mRecyclerView.setAdapter(mRecyclerAdapter);
  105.  
  106.     }
  107. }
  108.  
  109. private void getAllTask(DataSnapshot dataSnapshot) {
  110.  
  111.     //get all task when opening the app.
  112.     for(DataSnapshot singleShot : dataSnapshot.getChildren()){
  113.         String taskTitle = singleShot.getValue(String.class);
  114.         listOfTask.add(new Task(taskTitle));
  115.         mRecyclerAdapter = new RecyclerViewAdapter(MainActivity.this,listOfTask);
  116.         mRecyclerView.setAdapter(mRecyclerAdapter);
  117.     }
  118.  
  119. }}
  120. RecyclerViewAdapter.java
  121.  
  122. public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {
  123.  
  124.     private List<Task> tasks;
  125.     protected Context context;
  126.  
  127.     public RecyclerViewAdapter(Context context, List<Task> allTask){
  128.          this.tasks = allTask;
  129.          this.context = context;
  130.     }
  131.  
  132.     @Override
  133.     public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
  134.         RecyclerViewHolders viewHolders = null;
  135.         View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.to_do_list, parent,false);
  136.         viewHolders = new RecyclerViewHolders(view,tasks);
  137.         return viewHolders;
  138.     }
  139.  
  140.     @Override
  141.     public void onBindViewHolder(RecyclerViewHolders holder, int position) {
  142.         holder.categoryTitle.setText(tasks.get(position).getTask());
  143.     }
  144.  
  145.     @Override
  146.     public int getItemCount() {
  147.         return this.tasks.size();
  148.     }
  149. }
  150.  
  151.  
  152. RecyclerViewHolder.java
  153.  
  154. public class RecyclerViewHolders extends RecyclerView.ViewHolder {
  155.  
  156. private static final String TAG = RecyclerViewHolders.class.getSimpleName();
  157. public ImageView markIcon;
  158. public TextView categoryTitle;
  159. public ImageView deleteIcon;
  160. private List<Task> taskObject;
  161.  
  162. public RecyclerViewHolders(View itemView, final List<Task> taskObject) {
  163.     super(itemView);
  164.  
  165.     this.taskObject = taskObject;
  166.     categoryTitle = (TextView) itemView.findViewById(R.id.task_title);
  167.     markIcon = (ImageView) itemView.findViewById(R.id.task_icon);
  168.     deleteIcon = (ImageView) itemView.findViewById(R.id.task_delete);
  169.     deleteIcon.setOnClickListener(new View.OnClickListener() {
  170.         @Override
  171.         public void onClick(View v) {
  172.  
  173.  
  174.             String taskTitle = taskObject.get(getAdapterPosition()).getTask();
  175.             DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
  176.             Query deletequery = reference.orderByChild("task").equalTo(taskTitle);
  177.             deletequery.addListenerForSingleValueEvent(new ValueEventListener() {
  178.                 @Override
  179.                 public void onDataChange(DataSnapshot dataSnapshot) {
  180.                     for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) {
  181.                         appleSnapshot.getRef().removeValue();
  182.  
  183.                     }
  184.                 }
  185.  
  186.                 @Override
  187.                 public void onCancelled(DatabaseError databaseError) {
  188.                     Log.e(TAG, "Cancelled Exception", databaseError.toException());
  189.                 }
  190.             });
  191.         }
  192.     });
  193. }}
  194.  
  195. Task.java
  196.  
  197. public class Task {
  198. private String task;
  199.  
  200.     public Task() {
  201.     }
  202.  
  203.     public Task(String task) {
  204.          this.task = task;
  205.     }
  206.  
  207.     public String getTask() {
  208.          return task;
  209.     }
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement