使用2个api请求并在一个recyclerview中显示数据

yuvru6vn  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(303)

我使用改型2来获取数据,但在我的api响应中,我得到的是字段user\u id,而不是user\u name,因此当我将数据显示到回收器视图中时,我得到的结果如下:在此处输入图像描述
但是我需要显示用户名,我需要使用另一个api请求来获取用户名(选项1:使用请求来获取所有用户及其id的列表,或者选项2使用@path中具有用户id的请求来获取该特定id的用户名)。
我尝试了一些方法来实现这一点,但没有任何效果。这是我最后一次尝试
这是我在recycler视图中显示数据的代码:

  1. private void displayfollowup(String id,String sestoken) {
  2. followuplist=new ArrayList<>();
  3. Retrofit retrofit = RetrofitInstance.getRetrofitInstance();
  4. final Api api = retrofit.create(Api.class);
  5. Call<List<TraitementTicketModel>> call = api.getfollowup(id, sestoken);
  6. call.enqueue(new Callback <List<TraitementTicketModel>>() {
  7. @Override
  8. public void onResponse(Call<List<TraitementTicketModel>> call, Response<List<TraitementTicketModel>> response) {
  9. if (!response.isSuccessful()) {
  10. Toast.makeText(getApplicationContext(), "Something is wrong !! ", Toast.LENGTH_LONG).show();
  11. Log.e("TAG", "onResponse: something is wrong");
  12. } else if (response.body() == null) {
  13. return;
  14. }
  15. List<TraitementTicketModel> followups = response.body();
  16. for (TraitementTicketModel followup : followups) {
  17. followuplist.add(followup);
  18. }
  19. followuplist.add(firstfollowup());
  20. PutDataIntoRecyclerView(followuplist);
  21. }
  22. @Override
  23. public void onFailure(Call<List<TraitementTicketModel>> call, Throwable t) {
  24. Toast.makeText(getApplicationContext(),"Pas de connextion internet",Toast.LENGTH_LONG).show();
  25. }
  26. });
  27. }

这是我的尝试,我将此代码添加到displayfollowup方法中,尝试使用另一个api请求getusername将user_id设置为user_名称,但应用程序不断崩溃:

  1. for (TraitementTicketModel followup : followups) {
  2. getUsername(followup.getUsers_id(), new usercallback() {
  3. @Override
  4. public void onSuccess(@NonNull User value) {
  5. followup.setUsers_id(value.getName());
  6. }
  7. @Override
  8. public void onError(@NonNull Throwable throwable) {
  9. }
  10. });
  11. followuplist.add(followup);
  12. }

我使此接口能够使用getusername响应数据:

  1. public interface usercallback {
  2. void onSuccess(@NonNull User value);
  3. void onError(@NonNull Throwable throwable);
  4. }

这是获取用户名的另一个api请求:

  1. private void getUsername(String userid,@Nullable usercallback callbacks) {
  2. SharedPreferences sp =getApplicationContext().getSharedPreferences("tokenPref", Context.MODE_PRIVATE);
  3. String sestoken = sp.getString("token","");
  4. Retrofit retrofit= RetrofitInstance.getRetrofitInstance();
  5. final Api api= retrofit.create(Api.class);
  6. Call<User> call = api.getUsername(userid,sestoken);
  7. call.enqueue(new Callback<User>() {
  8. @Override
  9. public void onResponse(Call<User> call, Response<User> response) {
  10. if (!response.isSuccessful()) {
  11. Toast.makeText(getApplicationContext(),"Something is wrong !! ",Toast.LENGTH_LONG).show();
  12. Log.e("TAG", "onResponse: something is wrong");
  13. } else if (response.body()==null) {
  14. return;
  15. }
  16. callbacks.onSuccess(response.body());
  17. }
  18. @Override
  19. public void onFailure(Call<User> call, Throwable t) {
  20. callbacks.onError(t);
  21. }
  22. });
  23. }

我真的被困在这里了,我不能显示用户名而不是他的id,正如你所看到的,非常感谢你的帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题