| Talking Reminder this project is intenfed for people who are not tech savvy

MainActivity.java
1 package com.sudogeeks.talking_reminder;
2
3 import android.content.Intent;
4 import android.os.Bundle;
5 import android.view.ContextMenu;
6 import android.view.LayoutInflater;
7 import android.view.Menu;
8 import android.view.MenuItem;
9 import android.view.View;
10 import android.view.ViewGroup;
11 import android.widget.ImageView;
12 import android.widget.TextView;
13 import android.widget.Toast;
14
15 import androidx.annotation.NonNull;
16 import androidx.annotation.Nullable;
17 import androidx.appcompat.app.AppCompatActivity;
18 import androidx.appcompat.view.ActionMode;
19 import androidx.appcompat.widget.Toolbar;
20 import androidx.recyclerview.widget.LinearLayoutManager;
21 import androidx.recyclerview.widget.RecyclerView;
22
23 import com.amulyakhare.textdrawable.TextDrawable;
24 import com.amulyakhare.textdrawable.util.ColorGenerator;
25 import com.bignerdranch.android.multiselector.ModalMultiSelectorCallback;
26 import com.bignerdranch.android.multiselector.MultiSelector;
27 import com.bignerdranch.android.multiselector.SwappingHolder;
28 import com.firebase.ui.auth.AuthUI;
29 import com.google.android.material.floatingactionbutton.FloatingActionButton;
30 import com.google.firebase.auth.FirebaseAuth;
31 import com.google.firebase.auth.FirebaseUser;
32 import com.google.firebase.database.ChildEventListener;
33 import com.google.firebase.database.DataSnapshot;
34 import com.google.firebase.database.DatabaseError;
35 import com.google.firebase.database.DatabaseReference;
36 import com.google.firebase.database.FirebaseDatabase;
37
38 import java.text.DateFormat;
39 import java.text.ParseException;
40 import java.text.SimpleDateFormat;
41 import java.util.ArrayList;
42 import java.util.Arrays;
43 import java.util.Collections;
44 import java.util.Comparator;
45 import java.util.LinkedHashMap;
46 import java.util.List;
47
52 public class MainActivity extends AppCompatActivity {
53 private static final int RC_SIGN_IN = 123; // Choose an arbitrary request code value
54 private RecyclerView reminderListView;
55 private SimpleAdapter mAdapter;
56 private Toolbar mToolbar;
57 private TextView mNoReminderView;
58 private FloatingActionButton mAddReminderButton;
59 private int mTempPost;
60 private LinkedHashMap<Integer, Integer> IDmap = new LinkedHashMap<>();
61 private ReminderDatabase rb;
62 private MultiSelector mMultiSelector = new MultiSelector();
63 private AlarmReceiver mAlarmReceiver;
64 private FirebaseDatabase firebaseDatabase; //Entrypoint for our firebase database
65 private DatabaseReference reminderDatabaseReference; //To references specific part of the database
66 private ChildEventListener dbChildEventListener; //No notify the app whenever data changes in firebase database
67 private FirebaseAuth firebaseAuth; //For User authentication
68 private FirebaseAuth.AuthStateListener authStateListener; //Listener which invokes whenever auth state changes
69 private ArrayList<ReminderDO> reminderDOArrayList = new ArrayList<>();
70 // Multi select items in recycler view
71 private ModalMultiSelectorCallback mDeleteMode = new ModalMultiSelectorCallback(mMultiSelector) {
72
73 @Override
74 public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
75 getMenuInflater().inflate(R.menu.menu_add_reminder, menu);
76 return true;
77 }
78
85 @Override
86 public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
87 switch (menuItem.getItemId()) {
88
89 // On clicking discard reminders
90 case R.id.discard_reminder:
91 // Close the context menu
92 actionMode.finish();
93
94 // Get the reminder id associated with the recycler view item
95 for (int i = IDmap.size(); i >= 0; i--) {
96 if (mMultiSelector.isSelected(i, 0)) {
97 int id = IDmap.get(i);
98
99 // Get reminder from reminder database using id
100 ReminderDO temp = rb.getReminder(id);
101 // Delete reminder
102 rb.deleteReminder(temp);
103 // Remove reminder from recycler view
104 mAdapter.removeItemSelected(i);
105 // Delete reminder alarm
106 mAlarmReceiver.cancelAlarm(getApplicationContext(), id);
107 }
108 }
109
110 // Clear selected items in recycler view
111 mMultiSelector.clearSelections();
112 // Recreate the recycler items
113 // This is done to remap the item and reminder ids
114 mAdapter.onDeleteItem(getDefaultItemCount());
115
116 // Display toast to confirm delete
117 Toast.makeText(getApplicationContext(),
118 "Deleted",
119 Toast.LENGTH_SHORT).show();
120
121 // To check is there are saved reminders
122 // If there are no reminders display a message asking the user to create reminders
123 List<ReminderDO> mTest = rb.getAllReminders();
124
125 if (mTest.isEmpty()) {
126 mNoReminderView.setVisibility(View.VISIBLE);
127 } else {
128 mNoReminderView.setVisibility(View.GONE);
129 }
130
131 return true;
132
133 // On clicking save reminders
134 case R.id.save_reminder:
135 // Close the context menu
136 actionMode.finish();
137 // Clear selected items in recycler view
138 mMultiSelector.clearSelections();
139 return true;
140
141 default:
142 break;
143 }
144 return false;
145 }
146 };
147
153 @Override
154 protected void onCreate(Bundle savedInstanceState) {
155 super.onCreate(savedInstanceState);
156 setContentView(R.layout.activity_main);
157
158 //Routine : check user Authentication
159 firebaseDatabase = FirebaseDatabase.getInstance();
160 firebaseAuth = FirebaseAuth.getInstance();
161 FirebaseUser user = firebaseAuth.getCurrentUser();
162
163 //AuthStateListener: check the user's authentication state. if not signed in the send it for login/signup
164 authStateListener = new FirebaseAuth.AuthStateListener() {
165 @Override
166 public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
167 FirebaseUser user = firebaseAuth.getCurrentUser();
168 if (user != null) {
169 //User is signed in
170 reminderDatabaseReference = firebaseDatabase.getReference().child("reminders").child(user.getUid());
171 Toast.makeText(MainActivity.this, "You're now signed in.\nWelcome to Talking ReminderDO!", Toast.LENGTH_SHORT).show();
172 attachDatabaseReadListener();
173 } else {
174 //User is signed out
175 startActivityForResult(
176 AuthUI.getInstance()
177 .createSignInIntentBuilder()
178 .setIsSmartLockEnabled(false)
179 .setAvailableProviders(Arrays.asList(
180 new AuthUI.IdpConfig.GoogleBuilder().build(),
181 new AuthUI.IdpConfig.EmailBuilder().build()))
182 .build(),
183 RC_SIGN_IN);
184 }
185 }
186 };
187
188 // Initialize reminder database
189 rb = new ReminderDatabase(getApplicationContext());
190
191 // Initialize views
192 mToolbar = findViewById(R.id.toolbar);
193 mAddReminderButton = findViewById(R.id.add_reminder);
194 reminderListView = findViewById(R.id.reminder_list);
195 mNoReminderView = findViewById(R.id.no_reminder_text);
196
197 // To check is there are saved reminders
198 // If there are no reminders display a message asking the user to create reminders
199 List<ReminderDO> mTest = rb.getAllReminders();
200
201 if (mTest.isEmpty()) {
202 mNoReminderView.setVisibility(View.VISIBLE);
203 }
204
205 // Create recycler view
206 reminderListView.setLayoutManager(getLayoutManager());
207 registerForContextMenu(reminderListView);
208 mAdapter = new SimpleAdapter();
209 mAdapter.setItemCount(getDefaultItemCount());
210 reminderListView.setAdapter(mAdapter);
211
212 // Setup toolbar
213 setSupportActionBar(mToolbar);
214 mToolbar.setTitle(R.string.app_name);
215
216 // On clicking the floating action button
217 mAddReminderButton.setOnClickListener(new View.OnClickListener() {
218 @Override
219 public void onClick(View v) {
220 Intent intent = new Intent(v.getContext(), ReminderAddActivity.class);
221 startActivity(intent);
222 }
223 });
224
225 // Initialize alarm
226 mAlarmReceiver = new AlarmReceiver();
227 }
228
229 /* Private Helper method
230 * This method attaches a listener to the Firebase database reference. The listener listens to any kind of changes in the database.
231 *
232 */
233 private void attachDatabaseReadListener() {
234 //TODO Attaching Listener to ChildEventListener
235 if (dbChildEventListener == null) { // Create new Event Listener only when no listener is attached yet
236 dbChildEventListener = new ChildEventListener() {
237 //Specify what to do when a new entry is added in the database. New entry here means "new Reminder object"
238 @Override
239 public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
240 ReminderDO reminderObject = dataSnapshot.getValue(ReminderDO.class);
241 reminderDOArrayList.add(reminderObject);
242 }
243
244 @Override
245 public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
246 }
247
248 @Override
249 public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
250 }
251
252 @Override
253 public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
254 }
255
256 @Override
257 public void onCancelled(@NonNull DatabaseError databaseError) {
258 }
259 };
260 }
261 reminderDatabaseReference.addChildEventListener(dbChildEventListener);
262 }
263
264 /* Private helper method
265 * this method is called to Detach the database listener in the events of logout or app failure
266 */
267 private void detachDatabaseReadListener() {
268 if (dbChildEventListener != null) {
269 reminderDatabaseReference.removeEventListener(dbChildEventListener);
270 dbChildEventListener = null;
271 }
272 }
273
277 @Override
278 protected void onPause() {
279 super.onPause();
280 if (authStateListener != null) {
281 firebaseAuth.removeAuthStateListener(authStateListener);
282 }
283 detachDatabaseReadListener();
284 //reminderAdapter.clear();
285 }
286
293 @Override
294 public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
295 getMenuInflater().inflate(R.menu.menu_add_reminder, menu);
296 }
297
298 /*Private Helper method :
299 * Implement behaviour : On clicking a reminder item, user shoud be taken to Reminder Edit Activity
300 */
301 private void selectReminder(int mClickID) {
302 String mStringClickID = Integer.toString(mClickID);
303
304 // Create intent to edit the reminder
305 // Put reminder id as extra
306 Intent i = new Intent(this, ReminderEditActivity.class);
307 i.putExtra(ReminderEditActivity.EXTRA_REMINDER_ID, mStringClickID);
308 startActivityForResult(i, 1);
309 }
310
318 @Override
319 public void onActivityResult(int requestCode, int resultCode, Intent data) {
320 super.onActivityResult(requestCode, resultCode, data);
321 mAdapter.setItemCount(getDefaultItemCount());
322
323 if (requestCode == RC_SIGN_IN) {
324 //If user signs in is successful then only take the user to main page. Else force the user to login in first
325 if (resultCode == RESULT_OK) {
326 Toast.makeText(this, "Signed in", Toast.LENGTH_SHORT);
327 startActivity(new Intent(MainActivity.this, ReminderAddActivity.class));
328 } else if (requestCode == RESULT_CANCELED) {
329 Toast.makeText(this, "Sign in cancelled", Toast.LENGTH_SHORT);
330 finish();
331 }
332 }
333 }
334
339 @Override
340 public void onResume() {
341 super.onResume();
342 firebaseAuth.addAuthStateListener(authStateListener);
343 // Get all the reminders : If there are no reminders display a message
344 List<ReminderDO> mTest = rb.getAllReminders();
345
346 if (mTest.isEmpty()) {
347 mNoReminderView.setVisibility(View.VISIBLE);
348 } else {
349 mNoReminderView.setVisibility(View.GONE);
350 }
351
352 mAdapter.setItemCount(getDefaultItemCount());
353 }
354
359 protected RecyclerView.LayoutManager getLayoutManager() {
360 return new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
361 }
362
367 protected int getDefaultItemCount() {
368 return 100;
369 }
370
377 @Override
378 public boolean onCreateOptionsMenu(Menu menu) {
379 getMenuInflater().inflate(R.menu.main_menu, menu);
380 return true;
381 }
382
388 @Override
389 public boolean onOptionsItemSelected(MenuItem item) {
390 switch (item.getItemId()) {
391 case R.id.sign_out:
392 //sign out
393 AuthUI.getInstance().signOut(this);
394 return true;
395 default:
396 return super.onOptionsItemSelected(item);
397 }
398 }
399
400
405 public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.VerticalItemHolder> {
406 private ArrayList<ReminderItem> mItems;
407
408 public SimpleAdapter() {
409 mItems = new ArrayList<>();
410 }
411
412 public void onDeleteItem(int count) {
413 mItems.clear();
414 mItems.addAll(generateData(count));
415 }
416
417 public void removeItemSelected(int selected) {
418 if (mItems.isEmpty()) return;
419 mItems.remove(selected);
420 notifyItemRemoved(selected);
421 }
422
430 @Override
431 public VerticalItemHolder onCreateViewHolder(ViewGroup container, int viewType) {
432 LayoutInflater inflater = LayoutInflater.from(container.getContext());
433 View root = inflater.inflate(R.layout.recycle_items, container, false);
434
435 return new VerticalItemHolder(root, this);
436 }
437
444 @Override
445 public void onBindViewHolder(VerticalItemHolder itemHolder, int position) {
446 ReminderItem item = mItems.get(position);
447 itemHolder.setReminderTitle(item.mTitle);
448 itemHolder.setReminderDateTime(item.mDateTime);
449 itemHolder.setReminderRepeatInfo(item.mRepeat, item.mRepeatNo, item.mRepeatType);
450 itemHolder.setActiveImage(item.mActive);
451 }
452
457 @Override
458 public int getItemCount() {
459 return mItems.size();
460 }
461
462
463 public void setItemCount(int count) {
464 mItems.clear();
465 mItems.addAll(generateData(count));
466 notifyDataSetChanged();
467 }
468
475 public List<ReminderItem> generateData(int count) {
476 ArrayList<SimpleAdapter.ReminderItem> items = new ArrayList<>();
477
478 // Get all reminderDOS from the database
479 List<ReminderDO> reminderDOS = rb.getAllReminders();
480
481 // Initialize lists
482 List<String> Titles = new ArrayList<>();
483 List<String> Repeats = new ArrayList<>();
484 List<String> RepeatNos = new ArrayList<>();
485 List<String> RepeatTypes = new ArrayList<>();
486 List<String> Actives = new ArrayList<>();
487 List<String> DateAndTime = new ArrayList<>();
488 List<Integer> IDList = new ArrayList<>();
489 List<DateTimeSorter> DateTimeSortList = new ArrayList<>();
490
491 // Add details of all reminderDOS in their respective lists
492 for (ReminderDO reminderDO : reminderDOS) {
493 Titles.add(reminderDO.getTitle());
494 DateAndTime.add(reminderDO.getDate() + " " + reminderDO.getTime());
495 Repeats.add(reminderDO.getRepeat());
496 RepeatNos.add(reminderDO.getRepeatNo());
497 RepeatTypes.add(reminderDO.getRepeatType());
498 Actives.add(reminderDO.getActive());
499 IDList.add(reminderDO.getID());
500 }
501
502 int key = 0;
503
504 // Add date and time as DateTimeSorter objects
505 for (int k = 0; k < Titles.size(); k++) {
506 DateTimeSortList.add(new DateTimeSorter(key, DateAndTime.get(k)));
507 key++;
508 }
509
510 // Sort items according to date and time in ascending order
511 Collections.sort(DateTimeSortList, new DateTimeComparator());
512
513 int k = 0;
514
515 // Plug in the data to each recycler view item
516 for (DateTimeSorter item : DateTimeSortList) {
517 int i = item.getIndex();
518
519 items.add(new SimpleAdapter.ReminderItem(Titles.get(i), DateAndTime.get(i), Repeats.get(i),
520 RepeatNos.get(i), RepeatTypes.get(i), Actives.get(i)));
521 IDmap.put(k, IDList.get(i));
522 k++;
523 }
524 return items;
525 }
526
530 public class ReminderItem {
531 public String mTitle;
532 public String mDateTime;
533 public String mRepeat;
534 public String mRepeatNo;
535 public String mRepeatType;
536 public String mActive;
537
547 public ReminderItem(String Title, String DateTime, String Repeat, String RepeatNo, String RepeatType, String Active) {
548 this.mTitle = Title;
549 this.mDateTime = DateTime;
550 this.mRepeat = Repeat;
551 this.mRepeatNo = RepeatNo;
552 this.mRepeatType = RepeatType;
553 this.mActive = Active;
554 }
555 }
556
560 public class DateTimeComparator implements Comparator {
561 DateFormat f = new SimpleDateFormat("dd/mm/yyyy hh:mm");
562
563 public int compare(Object a, Object b) {
564 String o1 = ((DateTimeSorter) a).getDateTime();
565 String o2 = ((DateTimeSorter) b).getDateTime();
566
567 try {
568 return f.parse(o1).compareTo(f.parse(o2));
569 } catch (ParseException e) {
570 throw new IllegalArgumentException(e);
571 }
572 }
573 }
574
578 public class VerticalItemHolder extends SwappingHolder
579 implements View.OnClickListener, View.OnLongClickListener {
580 private TextView mTitleText, mDateAndTimeText, mRepeatInfoText;
581 private ImageView mActiveImage, mThumbnailImage;
582 private ColorGenerator mColorGenerator = ColorGenerator.DEFAULT;
583 private TextDrawable mDrawableBuilder;
584 private SimpleAdapter mAdapter;
585
593 public VerticalItemHolder(View itemView, SimpleAdapter adapter) {
594 super(itemView, mMultiSelector);
595 itemView.setOnClickListener(this);
596 itemView.setOnLongClickListener(this); //Set for long clicks
597 itemView.setLongClickable(true);
598
599 // Initialize adapter for the items
600 mAdapter = adapter;
601
602 // Initialize views
603 mTitleText = itemView.findViewById(R.id.recycle_title);
604 mDateAndTimeText = itemView.findViewById(R.id.recycle_date_time);
605 mRepeatInfoText = itemView.findViewById(R.id.recycle_repeat_info);
606 mActiveImage = itemView.findViewById(R.id.active_image);
607 mThumbnailImage = itemView.findViewById(R.id.thumbnail_image);
608 }
609
614 @Override
615 public void onClick(View view) {
616 if (!mMultiSelector.tapSelection(this)) {
617 mTempPost = reminderListView.getChildAdapterPosition(view);
618
619 int mReminderClickID = IDmap.get(mTempPost);
620 selectReminder(mReminderClickID);
621
622 } else if (mMultiSelector.getSelectedPositions().isEmpty()) {
623 mAdapter.setItemCount(getDefaultItemCount());
624 }
625 }
626
632 @Override
633 public boolean onLongClick(View view) {
634 AppCompatActivity activity = MainActivity.this;
635 activity.startSupportActionMode(mDeleteMode);
636 mMultiSelector.setSelected(this, true);
637 return true;
638 }
639
644 public void setReminderTitle(String reminderTitle) {
645 mTitleText.setText(reminderTitle);
646 String letter = "A";
647
648 if (reminderTitle != null && !reminderTitle.isEmpty()) {
649 letter = reminderTitle.substring(0, 1);
650 }
651
652 int color = mColorGenerator.getRandomColor();
653
654 // Create a circular icon consisting of a random background colour and first letter of title
655 mDrawableBuilder = TextDrawable.builder()
656 .buildRound(letter, color);
657 mThumbnailImage.setImageDrawable(mDrawableBuilder);
658 }
659
664 public void setReminderDateTime(String datetime) {
665 mDateAndTimeText.setText(datetime);
666 }
667
674 public void setReminderRepeatInfo(String repeat, String repeatNo, String repeatType) {
675 if (repeat.equals("true")) {
676 mRepeatInfoText.setText("Every " + repeatNo + " " + repeatType + "(s)");
677 } else if (repeat.equals("false")) {
678 mRepeatInfoText.setText("Repeat Off");
679 }
680 }
681
686 public void setActiveImage(String active) {
687 if (active.equals("true")) {
688 mActiveImage.setImageResource(R.drawable.ic_notifications_active);
689 } else if (active.equals("false")) {
690 mActiveImage.setImageResource(R.drawable.ic_notifications_off);
691 }
692 }
693 }
694 }
695 }
com.sudogeeks.talking_reminder.DateTimeSorter
Data Object class for creating DateTime objects to facilitate easy sorting.
Definition: DateTimeSorter.java:7
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder
Definition: MainActivity.java:578
com.sudogeeks.talking_reminder.ReminderDatabase.deleteReminder
void deleteReminder(ReminderDO reminderDO)
Definition: ReminderDatabase.java:208
com.sudogeeks.talking_reminder.MainActivity.onResume
void onResume()
Definition: MainActivity.java:340
com.sudogeeks.talking_reminder.ReminderDatabase.getReminder
ReminderDO getReminder(int id)
Definition: ReminderDatabase.java:106
com.sudogeeks.talking_reminder.MainActivity.onOptionsItemSelected
boolean onOptionsItemSelected(MenuItem item)
Definition: MainActivity.java:389
com.sudogeeks.talking_reminder.MainActivity.onCreateContextMenu
void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
Definition: MainActivity.java:294
com.sudogeeks.talking_reminder.ReminderDatabase.getAllReminders
List< ReminderDO > getAllReminders()
Definition: ReminderDatabase.java:138
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.onClick
void onClick(View view)
Definition: MainActivity.java:615
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter
Adapter class (Inner Class) for implementing recycler view.
Definition: MainActivity.java:405
com.sudogeeks.talking_reminder.ReminderDO
Data Object class for Reminder This class conatins all the attributes of reminder.
Definition: ReminderDO.java:15
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.onLongClick
boolean onLongClick(View view)
Definition: MainActivity.java:633
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.setReminderDateTime
void setReminderDateTime(String datetime)
Definition: MainActivity.java:664
com.sudogeeks.talking_reminder.MainActivity.onCreateOptionsMenu
boolean onCreateOptionsMenu(Menu menu)
Definition: MainActivity.java:378
com.sudogeeks.talking_reminder.MainActivity
Main Activity class This activity is the entry point of the app and is responsible for handling User ...
Definition: MainActivity.java:52
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.ReminderItem.ReminderItem
ReminderItem(String Title, String DateTime, String Repeat, String RepeatNo, String RepeatType, String Active)
Definition: MainActivity.java:547
com.sudogeeks.talking_reminder.MainActivity.onPause
void onPause()
Definition: MainActivity.java:278
com.sudogeeks.talking_reminder.ReminderDatabase
Class to manage database This class is for managing the database.
Definition: ReminderDatabase.java:15
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.VerticalItemHolder
VerticalItemHolder(View itemView, SimpleAdapter adapter)
Definition: MainActivity.java:593
com.sudogeeks.talking_reminder.MainActivity.getDefaultItemCount
int getDefaultItemCount()
Definition: MainActivity.java:367
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.DateTimeComparator
Definition: MainActivity.java:560
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.setActiveImage
void setActiveImage(String active)
Definition: MainActivity.java:686
com.sudogeeks.talking_reminder.AlarmReceiver
A class implementing basic alarm functions This class includes very basic features for an alarm.
Definition: AlarmReceiver.java:21
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.getItemCount
int getItemCount()
Definition: MainActivity.java:458
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.onCreateViewHolder
VerticalItemHolder onCreateViewHolder(ViewGroup container, int viewType)
Definition: MainActivity.java:431
com.sudogeeks.talking_reminder.AlarmReceiver.cancelAlarm
void cancelAlarm(Context context, int ID)
Definition: AlarmReceiver.java:139
com.sudogeeks.talking_reminder.MainActivity.onCreate
void onCreate(Bundle savedInstanceState)
Definition: MainActivity.java:154
com.sudogeeks.talking_reminder.MainActivity.getLayoutManager
RecyclerView.LayoutManager getLayoutManager()
Definition: MainActivity.java:359
com.sudogeeks.talking_reminder.ReminderEditActivity
Java class for handling UI component of Edit reminder layout.
Definition: ReminderEditActivity.java:32
com.sudogeeks.talking_reminder.MainActivity.onActivityResult
void onActivityResult(int requestCode, int resultCode, Intent data)
Definition: MainActivity.java:319
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.setReminderTitle
void setReminderTitle(String reminderTitle)
Definition: MainActivity.java:644
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.generateData
List< ReminderItem > generateData(int count)
Definition: MainActivity.java:475
com.sudogeeks.talking_reminder.ReminderAddActivity
Java class for handling UI component of Add reminder layout.
Definition: ReminderAddActivity.java:48
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.ReminderItem
Definition: MainActivity.java:530
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.onBindViewHolder
void onBindViewHolder(VerticalItemHolder itemHolder, int position)
Definition: MainActivity.java:445
com.sudogeeks.talking_reminder.MainActivity.SimpleAdapter.VerticalItemHolder.setReminderRepeatInfo
void setReminderRepeatInfo(String repeat, String repeatNo, String repeatType)
Definition: MainActivity.java:674