Как получить данные из нескольких массивов с помощью модернизации в java и android studio? - PullRequest
0 голосов
/ 05 апреля 2020

Я использую поддельный 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;
}
...