Можем ли мы создать и использовать два списка одного класса модели в адаптере? - PullRequest
0 голосов
/ 01 июня 2018

Я работаю над Retrofit, чтобы показать список изображений, и я использую List, чтобы показать изображения, которые работают нормально. Но проблема в том, что теперь я хочу показать имя и возраст из того же класса модели.

Мой вопрос: я хочу использовать другой список, чтобы показать имя и возраст в том же адаптере и установить для того же Recyclerview.Возможно ли это?

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.VideoInfoHolder> {

    private Context context;
    private List<String> imgList= Collections.emptyList();
    private ArrayList<MyModel> myModel;

    public MyAdapter(Context context) {
        this.context = context;
    }

    @Override
    public VideoInfoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_view, parent, false);
        return new VideoInfoHolder(itemView);
    }

    @Override
    public void onBindViewHolder(final VideoInfoHolder holder, final int position) {

          Picasso.with(this).load(imgList.getImage()).into(new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            //do what ever you want with your bitmap 
          imgView.setImageBitmap(loadedImage);///imgView is use to set the image in it
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {

        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {

        }
    });

        myModel= new ArrayList<>();
        for (int i = 0; i < myModel.size(); i++) {

            holder.tvName.setText(myModel.get(i).getName());
            holder.tvAge.setText(myModel.get(position).getAge());
        }


    }

    @Override
    public int getItemCount() {
        return imgList.size();
    }

    public class MyInfoHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public AppCompatImageView imgView;
        public AppCompatTextView tvName, tvAgee;

        public VideoInfoHolder(View itemView) {
            super(itemView);

            tvName = (AppCompatTextView) itemView.findViewById(R.id.tv_name);
            tvAge = (AppCompatTextView) itemView.findViewById(R.id.tv_age);

        }

      }

    public void notifyDataChange(List<String> myList) {
        if (!imgList.isEmpty()) {
            imgList.clear();
        }
        imgList= myList;
        notifyDataSetChanged();
    }
}

1 Ответ

0 голосов
/ 01 июня 2018

Вы должны создать свою собственную модель с именем изображения и возрастом. После этого при первом разборе просто установите изображение и используйте его в адаптере.Во второй раз используйте имя и возраст в той же модели адаптера.В последнем уведомлении адаптер.

Спасибо.

...