[Low] Refactor listAdapter
currently the list adapter copies entire arrays from noteVieaModel for every and each change on viewModel.allNotes. this is same as copying entire database per CRUD operation and is really inefficient.
suggestion:
- pass viewmodel to adapter and when the adapter needs to render item, get informations from viewmodel directly.
- to keep track of changes in viewModel.allNotes, let adapter subscribe to the viewModel and
- for each CRUD operations from viewModel, notify adapter with the type of operation and the item index
- with (type, index), adapter can call notifyItem* functions to update individual items.
This task is low priority because updating note list will not happen too often - CRUD operation is done by user. It will work fine as long as the user does not have too much of notes - like millions of notes.