我使用改型2来获取数据,但在我的api响应中,我得到的是字段user\u id,而不是user\u name,因此当我将数据显示到回收器视图中时,我得到的结果如下:在此处输入图像描述
但是我需要显示用户名,我需要使用另一个api请求来获取用户名(选项1:使用请求来获取所有用户及其id的列表,或者选项2使用@path中具有用户id的请求来获取该特定id的用户名)。
我尝试了一些方法来实现这一点,但没有任何效果。这是我最后一次尝试
这是我在recycler视图中显示数据的代码:
private void displayfollowup(String id,String sestoken) {
followuplist=new ArrayList<>();
Retrofit retrofit = RetrofitInstance.getRetrofitInstance();
final Api api = retrofit.create(Api.class);
Call<List<TraitementTicketModel>> call = api.getfollowup(id, sestoken);
call.enqueue(new Callback <List<TraitementTicketModel>>() {
@Override
public void onResponse(Call<List<TraitementTicketModel>> call, Response<List<TraitementTicketModel>> response) {
if (!response.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Something is wrong !! ", Toast.LENGTH_LONG).show();
Log.e("TAG", "onResponse: something is wrong");
} else if (response.body() == null) {
return;
}
List<TraitementTicketModel> followups = response.body();
for (TraitementTicketModel followup : followups) {
followuplist.add(followup);
}
followuplist.add(firstfollowup());
PutDataIntoRecyclerView(followuplist);
}
@Override
public void onFailure(Call<List<TraitementTicketModel>> call, Throwable t) {
Toast.makeText(getApplicationContext(),"Pas de connextion internet",Toast.LENGTH_LONG).show();
}
});
}
这是我的尝试,我将此代码添加到displayfollowup方法中,尝试使用另一个api请求getusername将user_id设置为user_名称,但应用程序不断崩溃:
for (TraitementTicketModel followup : followups) {
getUsername(followup.getUsers_id(), new usercallback() {
@Override
public void onSuccess(@NonNull User value) {
followup.setUsers_id(value.getName());
}
@Override
public void onError(@NonNull Throwable throwable) {
}
});
followuplist.add(followup);
}
我使此接口能够使用getusername响应数据:
public interface usercallback {
void onSuccess(@NonNull User value);
void onError(@NonNull Throwable throwable);
}
这是获取用户名的另一个api请求:
private void getUsername(String userid,@Nullable usercallback callbacks) {
SharedPreferences sp =getApplicationContext().getSharedPreferences("tokenPref", Context.MODE_PRIVATE);
String sestoken = sp.getString("token","");
Retrofit retrofit= RetrofitInstance.getRetrofitInstance();
final Api api= retrofit.create(Api.class);
Call<User> call = api.getUsername(userid,sestoken);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (!response.isSuccessful()) {
Toast.makeText(getApplicationContext(),"Something is wrong !! ",Toast.LENGTH_LONG).show();
Log.e("TAG", "onResponse: something is wrong");
} else if (response.body()==null) {
return;
}
callbacks.onSuccess(response.body());
}
@Override
public void onFailure(Call<User> call, Throwable t) {
callbacks.onError(t);
}
});
}
我真的被困在这里了,我不能显示用户名而不是他的id,正如你所看到的,非常感谢你的帮助
暂无答案!
目前还没有任何答案,快来回答吧!