Refactor idea: use ViewModels and LiveData/Flows
The activities tend to mix UI and data operations. Especially in the BillsListViewActivity, updating the UI in response to data changes is somewhat fiddly. There is lots of data (bills list, project list, project members, selected project, selected member) that is updated from many places (user navigating and clicking buttons, background sync).
Thus an idea is to refactor BillsListViewActivity to use a ViewModel, and use either LiveData or (State)Flows (comparison) to connect the UI in the Activity to the data in the ViewModel. Flows might require using Kotlin, not sure if you can use them from Java, since they are designed around coroutines.
These are large changes, i.e. an effort to develop but also an effort to review. It might also introduce new bugs. On the other hand, it might fix existing and avoid future bugs around UI state updates. In any case, I wanted to dump the idea.