Я использую ArchitectureComponents
в своем приложении. Я делаю API
запрос от ViewModel
и устанавливаю данные на RecyclerView
, используя ViewModel в ActivityMain. Для выполнения вызова API мне нужен Token
, который сохраняетсяв SharedPreference
. Мне нужно получить этот токен и добавить его в заголовки при выполнении запроса. Где и как получить значение SharedPreference.Он должен быть получен во ViewModel или Repository.
Это код для моего ViewModel
public class FoodieViewModel extends AndroidViewModel {
FoodieRepository repository;
MutableLiveData<ArrayList<Foodie>> foodieList;
public FoodieViewModel(@NonNull Application application) {
super(application);
repository=new FoodieRepository(application);
}
LiveData<ArrayList<Foodie>> getAllFoodie(){
if(foodieList==null){
foodieList=new MutableLiveData<ArrayList<Foodie>>();
loadFoodies();
}
return foodieList;
}
public void loadFoodies(){
String url="somethimg.com";
JsonArrayRequest request =new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
ArrayList<Foodie> list=new ArrayList<>();
try {
for(int i=0;i<response.length();i++){
JSONObject obj=response.getJSONObject(i);
Foodie foodie=new Foodie();
String name=obj.getString("firstname");
foodie.setName(name);
list.add(foodie);
}
}catch (JSONException e){
e.printStackTrace();
}
foodieList.setValue(list);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String auth = "JWT " + "sometoken";
headers.put("Authorization", auth);
headers.put("Content-Type", "application/json");
return headers;
}
};
AppController.getInstance().addToRequestQueue(request);
}
Как получить токен, если он хранится в SharedPreference
?