Use CursorLoader to populate ListView as an asynchronous task (See).
CursorLoader is backed by ContentProvider.
You don’t need a ContentProvider to use an SQLite database if the use is entirely within your own application. (See)
- Replace Activity with Alert dialog: https://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog
- Improve EditText: https://developer.android.com/guide/topics/ui/controls/text.html