2017-10-05 4 views
0

J'utilise ViewModel, introduit dans IO/17. J'utilise les lignes directrices suivantes fournies sur la page des développeurs android: http://www.youtube.com/watch?v=dz5d5a9a https://developer.android.com/topic/libraries/architecture/viewmodel.htmlExécution des opérations réseau à partir de ViewModel

Voici leur exemple de code.

public class MyViewModel extends ViewModel { 
private MutableLiveData<List<User>> users; 
public LiveData<List<User>> getUsers() { 
    if (users == null) { 
     users = new MutableLiveData<List<Users>>(); 
     loadUsers(); 
    } 
    return users; 
} 

private void loadUsers() { 
    // do async operation to fetch users 
} 
} 

Je souhaite effectuer la demande Volley dans la méthode dite «loadUsers(). Mais je ne peux pas le faire car il a besoin d'un « contexte » comme suit

Volley.newRequestQueue(context).add(jsonObjectRequest); 

Donc ma question est,

  1. Est-il recommandé (ou possible) pour effectuer des opérations de réseau dans un ViewModel ??
  2. Si oui (si possible), comment le faire?
+0

j'ai eu ma réponse ... poster tard ... les appels api peuvent être faits à partir de VM. Mais puisque j'utilisais la volée, ma seule préoccupation était de passer le contexte en dehors de la classe de vue (activité/fragment) qui cause des problèmes. J'ai résolu ce problème en utilisant un système de rattrapage. –

Répondre

0

Tenir compte Dagger, de cette façon vous n'avez pas à vous, de fournir context pour Volley de votre ViewModel.