2017-08-23 3 views
1

Ich möchte Repository Modul implementieren, um Datenvorgänge zu behandeln. Ich habe JSON-Datei in row Verzeichnis und möchte konkrete Repository Implementierung erstellen, um Daten aus Datei zu erhalten. Ich bin mir nicht sicher, ob ich Context als Attribut im Konstruktor oder Methode von Repository verwenden kann.Repository-Modul-Implementierung mit Kontext

z.B.

public class UserRepository { 

    UserRepository() {} 

    public List<User> loadUserFromFile(Context contex) { 
     return parseResource(context, R.raw.users); 
    } 
} 
+0

Wofür möchten Sie den Kontext verwenden? Sie benötigen es nicht, um auf das Dateisystem zuzugreifen ... –

+0

Ich benötige Kontext, um auf Ressourcen zuzugreifen. Wie ich bereits erwähnt habe, habe ich meine JSON-Datei im Rohverzeichnis. – Martin

+1

Sie können den Kontext als Parameter übergeben, kein Problem. – finki

Antwort

1

Ich sehe keinen Schaden in der Weitergabe des Kontexts als Attribut. Wenn Sie die Idee nicht mögen, dann können Sie den Kontext über eine bequeme Methode abrufen: Static way to get 'Context' on Android?

1

IMHO, sollten Sie verwenden DI (Dependency Injection) wie Dagger2, Sie zu bieten Context etwas wie

AppModule.class

@Module 
public class AppModule { 

    private Context context; 

    public AppModule(@NonNull Context context) { 
     this.context = context; 
    } 

    @Singleton 
    @Provides 
    @NonNull 
    public Context provideContext(){ 
     return context; 
    } 

} 

MyApplication.class

public class MyApplication extends Application { 

    private static AppComponent appComponent; 

    public static AppComponent getAppComponent() { 
     return appComponent; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     appComponent = buildComponent(); 
    } 

    public AppComponent buildComponent(){ 
     return DaggerAppComponent.builder() 
       .appModule(new AppModule(this)) 
       .build(); 
    } 
} 

UserRepository.class

@Singleton 
public class UserRepository { 

    UserRepository() {} 

    @Inject 
    public List<User> loadUserFromFile(Context contex) { 
     return parseResource(context, R.raw.users); 
    } 
} 

Glücklich Coding .. !!