I like to have separate files for each class in my Android projects, the only exception being AsyncTasks. Having this many java files, you should have more packages than the base package. I ended up with a package for each type of main class. Each class has a name ending with its type.
com.example
Activities
Contains all the actions. All classes are called Activity at the end. This way, you can immediately find out what it is when you read Java code that does not have the full package name.
adapters
Contains all adapters.
authenticator
Contains any class associated with a user signature. I create a local account and with all the classes associated with it is very convenient.
data
Contains all classes related to data management, such as ContentProvider and SQLiteHelper.
data.migrations
Contains all my SQLite migrations. I created a class for migration, read about it here, and put them in this package.
Fragments
Contains all the fragments.
Assistants
Contains helper classes. A helper class is a place to put code that is used in more than one place. For example, I have a DateHelper. Most methods are static.
interfaces
Contains all interfaces.
Models
Contains all local models. When synchronizing with the HTTP API, I parse JSON on these Java objects using Jackson. I also pull cursor lines into these models.
preferences
Contains all classes for user settings. When creating preferences, I need a custom PreferenceDialog, as well as a custom PreferenceCategory. They live here.
synchronization
Contains all classes related to synchronization. I am using SyncAdapter to retrieve data from the HTTP API. In addition to the SyncAdapter, SyncService is required, so I created the package.
source share