If you go down the code, then:
1) Mass indiscriminate imports (do you really need it all?).
2) Do not use access modifiers.
3) Do not follow the rules for naming variables.
4) The Context in the Activity placed in the class field for some reason (is it not better to use this in the case of Activity?).
5) Initialization of List<UserModel> users moved to a separate method, when it could be done immediately in the class field where this variable is declared.
6) Initialization of the UserAdapter adapter after UserAdapter adapter 4 would seem to be done in the class field where this variable is declared, but if you think well, it is taken out separately, only to update this adapter once. RecyclerView will provide you with an adapter on demand .getAdapter() .
7) Some View rendered in the class fields, but are used once for all the code, and some are used at all at the moment of their initialization. For example, the variable fab_add initialized in onCreate in one method, and is used once in the same onCreate , but in another method. In this case, with the experience of the preceding paragraphs, the removal of the code into the methods initViews() , setupViews() , initAdapter() should be discarded, then the variable fab_add in the class field will not have to endure.
8) It is customary to make string resources in a separate string file located in project resources.
9) Permanent creation of a new object new Handler() , when each View contains a Handler . Take any of your .postDelayed rendered in the class field and tell it .post or .postDelayed .
10) Permanent creation of objects throughout the entire code .. new Response.Listener() , new Runnable() , new Response.ErrorListener() .., you will someday be cursed by the garbage collector. For example, different variations of new Runnable() , which, if you look, are likely to be often called. This is where it would be worthwhile to put these Runnable objects into the class field by initializing once and then calling on them.
11) This transfer of MB brackets is used in languages ​​such as C++ , but in Java more common to open a curly bracket without a new line. If you add extra spaces to this and take into account the previous points, then in the UserActivity class the number of lines of code can be reduced from 400 to 200-250 (offhand).
I only looked at one UserActivity class. The rest look lazy :)