Я использую поддельный API JSONPlaceholder, как я могу получить информацию о пользователе ("username", "email" и т. Д. c.) Из массива users, используя только поле "userId" в массиве posts? Пользовательский класс и класс Post содержат только getter и setters, ничего особенного. Я хочу напечатать имя пользователя, адрес электронной почты и заголовок, тело и идентификатор его сообщений.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.lv);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(JsonPlaceholderAPI.URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
api = retrofit.create(JsonPlaceholderAPI.class);
getPosts();
getUsers();
}
private void getUsers(){
Call<List<User>> usercall = api.getUsers();
usercall.enqueue(new Callback<List<User>>() {
@Override
public void onResponse(@NotNull Call<List<User>> call, @NotNull Response<List<User>> response) {
List<User> userList = response.body();
userAdapter = new UserAdapter(MainActivity.this, userList);
listView.setAdapter(userAdapter);
}
@Override
public void onFailure(@NotNull Call<List<User>> call, @NotNull Throwable t) {
}
});
}
private void getPosts(){
Call<List<Post>> postcall = api.getPosts();
postcall.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(@NotNull Call<List<Post>> call, @NotNull Response<List<Post>> response) {
List<Post> postList = response.body();
postAdapter = new PostAdapter(MainActivity.this, postList);
listView.setAdapter(postAdapter);
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
}
});
}
public class PostAdapter extends BaseAdapter {
private Context context;
private Post post;
private User user;
private List<Post> dataModelArrayList;
public PostAdapter(MainActivity context, List<Post> dataModelArrayList) {
this.context = context;
this.dataModelArrayList = dataModelArrayList;
}
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getCount() {
return dataModelArrayList.size();
}
@Override
public Object getItem(int position) {
return dataModelArrayList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@SuppressLint("SetTextI18n")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.retro_lv, null, true);
holder.userid = (TextView) convertView.findViewById(R.id.username);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.body = (TextView) convertView.findViewById(R.id.body);
convertView.setTag(holder);
}else {
// the getTag returns the viewHolder object set as a tag to the view
holder = (ViewHolder)convertView.getTag();
}
// holder.userid.setText("Username: "+dataModelArrayList.get(position).getUser());
holder.title.setText("Title: "+dataModelArrayList.get(position).getTitle());
holder.body.setText("Body: "+dataModelArrayList.get(position).getBody());
return convertView;
}
private class ViewHolder {
protected TextView id, username, userid, title, body;
}
public class UserAdapter extends BaseAdapter {
public Context context;
public List<User> dataModelArrayList;
public UserAdapter(Context context, List<User> dataModelArrayList) {
this.context = context;
this.dataModelArrayList = dataModelArrayList;
}
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getCount() {
return dataModelArrayList.size();
}
@Override
public Object getItem(int position) {
return dataModelArrayList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@SuppressLint("SetTextI18n")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.retro_lv, null, true);
holder.username = (TextView) convertView.findViewById(R.id.username);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.body = (TextView) convertView.findViewById(R.id.body);
convertView.setTag(holder);
}else {
// the getTag returns the viewHolder object set as a tag to the view
holder = (ViewHolder)convertView.getTag();
}
holder.username.setText("Username: "+dataModelArrayList.get(position).getUsername());
// holder.title.setText("ID: "+dataModelArrayList.get(position).getPost());
holder.body.setText("ID: "+dataModelArrayList.get(position).getId());
return convertView;
}
private class ViewHolder {
protected TextView username, id, title, body;
}