Je fais une requête dans les noms d'utilisateurs loadFriends() avec la méthode loadUserName() Mais rien ne se passe et la deuxième requête (loadUserName()) est déclenchée uniquement pour la première ligne. J'ai des journaux et le code de ce fragment Aussi, AS dites-moi, que Liste "noms" is never assigned, mais je ne le remplis pas dans la méthode loadUserNames()? Et est-ce lié à ma question (ne pas appeler onResponse et onFailure?) D'autres méthodes et demandes fonctionnent bienretofit2 n'appelle pas onResponse ou onFailure
public class FriendsFragment extends Fragment {
private String sid;
private PenyokService friendsService;
private RecyclerView friendsRecyclerView;
private FriendsAdapter friendsAdapter;
private List<Integer> ids;
private List<String> names;
public FriendsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
friendsRecyclerView = (RecyclerView) inflater.inflate(R.layout.fragment_stats, container, false);
// view = getView();
sid = ((MainActivity) getActivity()).getSid();
friendsService = APIUtils.getPService();
friendsRecyclerView = (RecyclerView) inflater.inflate(R.layout.fragment_stats, container, false);
friendsAdapter = new FriendsAdapter(new ArrayList<Integer>(0), new ArrayList<String>(0), getActivity().getApplicationContext(), sid);
friendsRecyclerView.setAdapter(friendsAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
friendsRecyclerView.setLayoutManager(layoutManager);
loadFriends();
return friendsRecyclerView;
}
private void loadFriends(){
friendsService.getFriends(sid).enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, Response<Model> response) {
if(response.isSuccessful()) {
ids = response.body().getMyFriends();
Log.d("testtest", "start load names");
for (int i : ids)
Log.d("test", "loaded names " + i);
loadUserName(ids);
Log.d("testtest", "loaded names");
friendsAdapter.updateFriends(response.body().getMyFriends(), names);
// Toast.makeText(getActivity(), "Gav gav", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Model> call, Throwable t) {
//showErrorMessage();
Log.d("testtest", t.toString());
Toast.makeText(getActivity(), t.toString(), Toast.LENGTH_SHORT).show();
}
});
}
private void loadUserName(List<Integer> id) {
Log.d("test", "loading names");
for (int x : id) {
Log.d("testtest", "after for " + x);
friendsService.getUserName(x, sid).enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, Response<Model> response) {
Log.d("testtest", "before response is successful");
if (response.isSuccessful()) {
Log.d("testtest", "response is successful");
if (response.body().getNameFor() != null) {
names.add(response.body().getNameFor());
Log.d("testtest", "in onResponse");
}
else {
names.add("Set your name");
Log.d("testtest", "we set name");
}
}
}
@Override
public void onFailure(Call<Model> call, Throwable t) {
//showErrorMessage();
Log.d("testtest", t.toString() + "loadUserName");
// Toast.makeText(getActivity(), t.toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
}
09-07 15:35:30.993 6238-6238/com.journaldev.navigationdrawer D/testtest: start load names
09-07 15:35:30.993 6238-6238/com.journaldev.navigationdrawer D/test: loaded names 1
09-07 15:35:30.993 6238-6238/com.journaldev.navigationdrawer D/test: loaded names 2
09-07 15:35:30.993 6238-6238/com.journaldev.navigationdrawer D/test: loaded names 4
09-07 15:35:30.993 6238-6238/com.journaldev.navigationdrawer D/test: loading names
09-07 15:35:30.993 6238-6238/com.journaldev.navigationdrawer D/testtest: after for 1
09-07 15:35:31.053 6238-6238/com.journaldev.navigationdrawer D/testtest: after for 2
09-07 15:35:31.063 6238-6238/com.journaldev.navigationdrawer D/testtest: after for 4
09-07 15:35:31.103 6238-6238/com.journaldev.navigationdrawer D/testtest: loaded names