GoogleAssistant akan mencatat dan menyimpan pengingat atau

Selamat dini hari! Tutorial kali ini kita akan membuat sebuah aplikasi "Pengingat Tugas" atau dalam bahasa batak nya "To Do Reminder" atau "To Do List". Disini kita akan membutuhkan 5 java class termasuk MainActivity, 3 layout resource termasuk layout activity, dan 5 buah icon. Untuk penyimpanan kita akan menggunakan SQL Database. Sebelumnya blog ini belum pernah membahas secara khusus mengenai penyimpanan SQL Database, dan pada tutorial ini juga kita tidak akan membahasnya secara terperinci. Baik, langkah pertama yang di lakukan tentunya membuat proyeknya terlebih dahulu. Proyek dalam tutorial ini diberikan nama Supaya nantinya tidak kewalahan, kita buat dulu 5 buah icon melalui vector asset maker. Anda bisa melihat postingan khusus mengenai cara membuat vector icon pada halaman All Post ini. Berikut screenshoot yang memperlihatkan struktur dan penamaan folder dan file pada proyek ini, serta screenshoot aplikasinya saat di jalankan di emulator. Gambar 1 Menunjukan struktur dan penamaan folder dan file Berikutnya kita ke disini kita hanya menambahkan 2 komponen yaitu sebuah Listview dan Button floating. Karena disini saya memakai floating action Button, maka diperlukan untuk menambahkan library material implementation ' ke Module app lalu lakukan sync gradle. Berikut isi dari Selanjutnya kita perlu membuat 2 layout resource baru, yang mana kedua layout ini di fungsikan sebagai custom Listview dan custom AlertDialog. Untuk layout custom Listview diberikan nama dan custom AlertDialog diberi nama Berikut isi dari masing-masing file layout tersebut Berikutnya membuat sebuah java class baru sebagai setter dan getter item-item nya, yaitu id, title, date dan time dari aplikasi "Pengingat Tugas" yang segera akan kita selesaikan ini. file ini di beri nama Berikut isi lengkap dari file ini package public class ModelData { int id; private String title; private String date; private String time; ModelDataint id, String title, String date, String time { = id; = title; = date; = time; } int getId { return id; } String getTitle { return title; } String getDate { return date; } String getTime { return time; } } Langkah berikutnya adalah membuat file java adaptor untuk SQL Database nya. Seperti terlihat pada gambar 1 di atas, file database ini di beri nama Fungsinya tentu untuk Create, Read, Update dan Delete CRUD data. package import import import import import import import import public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG = "DatabaseHelper"; private static final String TABLE_NAME = "ToDo_Table"; private static final String COL1 = "ID"; private static final String COL2 = "Name"; private static final String COL3 = "Date"; private static final String COL4 = "Time"; public DatabaseHelperContext context { supercontext, TABLE_NAME, null, 1; } Override public void onCreateSQLiteDatabase db { String createTable = "CREATE TABLE " + TABLE_NAME + "" + COL1 + " integer primary key, " + COL2 + " TEXT, " + COL3 + " DATE, " + COL4 + " TIME" + ""; "Creating table " + createTable; } Override public void onUpgradeSQLiteDatabase db, int oldVersion, int newVersion { TABLE IF EXISTS " + TABLE_NAME; onCreatedb; } //Memasukkan data ke database public boolean insertDataString item, String date, String time { SQLiteDatabase db = ContentValues contentValues = new ContentValues; item; date; time; "insertData Inserting " + item + " to " + TABLE_NAME; long result = null, contentValues; return result != -1; } //Menghapus data dari database void deleteDataint id { SQLiteDatabase db = COL1 + "=" + id, null; } //Memuat semua data ke listview public ArrayList getAllData { ArrayList arrayList = new ArrayList; SQLiteDatabase db = String query = "SELECT * FROM " + TABLE_NAME; SuppressLint"Recycle" Cursor cursor = null; while { int id = String title = String date = String time = ModelData modelData = new ModelDataid, title, date, time; } return arrayList; } } Jika ada kode yang di tandai atau di garis bawahi warna merah error, abaikan dulu sementara sampai implementasi pembuatan aplikasi ini selesai. Tahap selanjutnya adalah membuat file java adaptor untuk listview. Implementasi penghapusan data dari database juga di lakukan di dalam adaptor ini. File ini diberikan nama Berikut isi keseluruhan dari file ini. package import import import import import import import import import import import public class ItemAdapter extends BaseAdapter { private Context context; private ArrayList arrayList; public ItemAdapterContext context, ArrayList arrayList { super; = context; = arrayList; } Override public int getCount { return } Override public Object getItemint position { return } Override public long getItemIdint position { return position; } SuppressLint{"ViewHolder", "InflateParams"} Override public View getViewint position, View convertView, final ViewGroup parent { LayoutInflater layoutInflater = LayoutInflater assert layoutInflater != null; convertView = null; TextView titleTextView = TextView dateTextView = TextView timeTextView = final ImageView delImageView = //Menghapus tugas dari database saat icon hapus di klik { Override public void onClickView v { final int pos = int deleteItempos; } }; ModelData modelData = return convertView; } //Menghapus tugas dari listview private void deleteItemint position { deleteItemFromDb notifyDataSetChanged; } //Menghapus tugas dari database private void deleteItemFromDbint id { DatabaseHelper databaseHelper = new DatabaseHelpercontext; try { toastMsg"Tugas di hapus"; } catch Exception e { toastMsg"Oppss.. ada kesalahan saat menghapus"; } } //Metode pesan toast private void toastMsgString msg { Toast t = msg, } } Dan kelas java terakhir yang perlu dibuat adalah kelas Kelas ini tentunya berfungsi untuk menghantarkan notifikasi ke smartphone pengguna setelah waktu pengingat di setel. Setelah kelas ini di buat, pada kita perlu melakukan pembaharuan, yaitu dengan menambahkan kelas ini sebagai receiver, juga kita perlu menambahkan beberapa izin yang di perlukan. Berikut isi lengkap dari masing-masing file ini package import import import import import import public class Notifikasi extends BroadcastReceiver { public static String NOTIFICATION_ID = "notification-id"; public static String NOTIFICATION = "notification"; public void onReceiveContext context, Intent intent { NotificationManager notificationManager = NotificationManager Notification notification = if >= { int importance = NotificationChannel notificationChannel = new NotificationChannel "Pengingat", importance; assert notificationManager != null; } int id = 0; if notificationManager != null { notification; } } } Sekali lagi jika ada kode yang di warnai merah atau error, di abaikan dulu. Kecuali jika sudah selesai tutorial ini dan ada yang di tandai error barulah silahkan mencari dimana letak kesalahan nya. Baik, tahap terakhir Cukup banyak koding yang di lakukan pada file ini, jika di jelaskan bisa panjang urusan nya. Pada setiap metode kodingan sudah saya buat sedikit-sedikit penjelasan nya. Jadi langsung saja berikut isi keseluruhan pada file activity ini import import import import import import import import import import import import import import import import import import import import import import import import import import import import import import import import import static public class MainActivity extends AppCompatActivity { public static final String NOTIFICATION_CHANNEL_ID = "10001"; private final static String default_notification_channel_id = "default"; private static final String TAG = "MainActivity"; private DatabaseHelper databaseHelper; private ListView itemsListView; private FloatingActionButton fab; private AlphaAnimation buttonClick = new AlphaAnimation1F, Override protected void onCreateBundle savedInstanceState { setContentView databaseHelper = new DatabaseHelperthis; fab = findViewById itemsListView = findViewById populateListView; onFabClick; hideFab; } //Mengatur notifikasi private void scheduleNotificationNotification notification, long delay { Intent notificationIntent = new Intentthis, 1; notification; PendingIntent pendingIntent = 0, notificationIntent, AlarmManager alarmManager = AlarmManager getLayoutInflater.getContext.getSystemService if alarmManager != null { delay, pendingIntent; } } private Notification getNotificationString content { //Saat notifikasi di klik di arahkan ke MainActivity Intent intent = new Intentthis, PendingIntent pendingIntent = 0, intent, 0; builder = new default_notification_channel_id; return } //Memasukkan data ke database private void insertDataToDbString title, String date, String time { boolean insertData = date, time; if insertData { try { populateListView; toastMsg"Tugas di tambahkan"; } catch Exception e { } } else toastMsg"Opps.. terjadi kesalahan saat menyimpan!"; } //Mengambil seluruh data dari database ke listview private void populateListView { try { ArrayList items = ItemAdapter itemsAdopter = new ItemAdapterthis, items; } catch Exception e { } } //Menyembunyikan tombol floating tambah saat listview di scroll private void hideFab { { Override public void onScrollStateChangedAbsListView view, int scrollState { if scrollState == SCROLL_STATE_IDLE { }else{ } } Override public void onScrollAbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount { } }; } private void onFabClick { try { { Override public void onClickView v { showAddDialog; } }; } catch Exception e { } } //Implementasi klik dari tombol tambah SuppressLint"SimpleDateFormat" private void showAddDialog { dialogBuilder = new LayoutInflater inflater = SuppressLint"InflateParams" final View dialogView = null; final EditText judul = final TextView tanggal = final TextView waktu = final long date = SimpleDateFormat dateSdf = new SimpleDateFormat"d MMMM"; String dateString = SimpleDateFormat timeSdf = new SimpleDateFormat"hh mm a"; String timeString = final Calendar cal = //Set tanggal { RequiresApiapi = Override public void onClickView v { final DatePickerDialog datePickerDialog = new DatePickerDialoggetLayoutInflater.getContext, new { SuppressLint"SetTextI18n" Override public void onDateSetDatePicker view, int year, int monthOfYear, int dayOfMonth { String newMonth = getMonthmonthOfYear + 1; + " " + newMonth; year; monthOfYear; dayOfMonth; } }, } }; //Set waktu { Override public void onClickView v { TimePickerDialog timePickerDialog = new TimePickerDialoggetLayoutInflater.getContext, new { Override public void onTimeSetTimePicker view, int hourOfDay, int minute { String time; SuppressLint"DefaultLocale" String minTime = minute; if hourOfDay >= 0 && hourOfDay < 12 { time = hourOfDay + " " + minTime + " AM"; } else { if hourOfDay != 12 { hourOfDay = hourOfDay - 12; } time = hourOfDay + " " + minTime + " PM"; } hourOfDay; minute; 0; "onTimeSet Time has been set successfully"; } }, false; } }; tugas baru"; new { public void onClickDialogInterface dialog, int whichButton { String title = String date = String time = if != 0 { try { insertDataToDbtitle, date, time; scheduleNotificationgetNotificationtitle, } catch Exception e { } } else { toastMsg"Oops, Gak bisa kosong tugas nya."; } } }; new { public void onClickDialogInterface dialog, int whichButton { } }; AlertDialog b = } //Metode pesan toast private void toastMsgString msg { Toast t = msg, 0,0; } //Mengkonversi bulan dari huruf menjadi angka private String getMonthint month { return new DateFormatSymbols.getMonths[month - 1]; } } Begitu saja, silahkan langsung di publish ke Google Play Store. Sekian dan terima kasih! Jika ada pertanyaan silahkan di pertanyakan di kolom komentar atau kontak form yang ada di bilah samping ! Share PDVc.
  • 3kv0gju1dw.pages.dev/21
  • 3kv0gju1dw.pages.dev/218
  • 3kv0gju1dw.pages.dev/64
  • 3kv0gju1dw.pages.dev/17
  • 3kv0gju1dw.pages.dev/450
  • 3kv0gju1dw.pages.dev/338
  • 3kv0gju1dw.pages.dev/338
  • 3kv0gju1dw.pages.dev/113
  • cara membuat reminder di android