My Class In Not An Enclossing Class
so I have class constructor: public class HealthDataStore { // this class is 3rd party api - can't modify public HealthDataStore(Context context, HealthDataStore.ConnectionList
Solution 1:
Always try to avoid using inner classes if you know you'll have to extend them. Instead use a separate class, and swap the outer class with a field. If you need to modify a private field that you do not want to expose then create a package-private setter.
public class HealthRepository {
private String DSConnectionStatus;
public void connectDataStore(HealthDSConnectionListener listener) {
mStore = new HealthDataStore(app, listener);
mStore.connectService();
}
void setConnectionStatus(String status) {
DSConnectionStatus = status;
}
}
// create another class in the same package
public class HealthDSConnectionListener implements HealthDataStore.ConnectionListener {
private final HealthRepository repo;
public HealthDSConnectionListener(HealthRepository repo) {
this.repo = repo;
}
@Override public void onConnected() { repo.setConnectionStatus("Connected"); }
@Override public void onDisconnected() { repo.setConnectionStatus("Disconnected"); }
@Override public void onConnectionFailed(HealthConnectionErrorResult error) {
repo.setConnectionStatus("Connection Failed");
}
};
public class SplashViewModel extends AndroidViewModel {
private final HealthRepository repo;
public void connectRepoDataStore() {
// repo is object of class HealthRepository
repo.connectDataStore(mConnectionListener)
// other things to do here
}
private final HealthDSConnectionListener mConnectionListener = new HealthDSConnectionListener(repo) {
@Override public void onConnected() {
super.onConnected();
// ...
}
@Override public void onConnectionFailed(HealthConnectionErrorResult error) {
super.onConnectionFailed(error);
// ...
}
@Override public void onDisconnected() {
super.onDisconnected();
// ...
}
}
}
Post a Comment for "My Class In Not An Enclossing Class"