Как я могу показать изображение в RecyclerView? - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу показать изображение в Recyclerview (список режимов) из нарисованного, но это изображение не может показать, как я могу это исправить?

это мой ListBookAdapter.java

public class ListBookAdapter extends RecyclerView.Adapter<ListBookAdapter.ListViewHolder> {
private Context context;
private ArrayList<Book> listbook;
private OnItemSelected onItemSelected;

public ListBookAdapter(Context context, ArrayList<Book> book, OnItemSelected onItemSelected) {
    this.context = context;
    this.listbook = book;
    this.onItemSelected = onItemSelected;
}

@NonNull
@Override
public ListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.item_row_book, viewGroup,false);
    return new ListViewHolder(view);
}

public class ListViewHolder extends RecyclerView.ViewHolder {
    ImageView imgPhoto;
    TextView tvName, tvDetail;

    ListViewHolder(View itemView){
        super(itemView);
        imgPhoto = itemView.findViewById(R.id.img_item_photo);
        tvName = itemView.findViewById(R.id.tv_item_name);
        tvDetail = itemView.findViewById(R.id.tv_item_title);

    }
}

@Override
public void onBindViewHolder(@NonNull ListViewHolder holder, int position) {
    final Book book = listbook.get(position);

   System.out.println("Data Photo : " + book.getPhoto());
   int drawableResourceId = context.getResources().getIdentifier(book.getPhoto(), "drawable", holder.itemView.getContext().getPackageName());

    Glide.with(holder.itemView.getContext())
            .load(drawableResourceId)
            .apply(new RequestOptions().override(55,55))
            .into(holder.imgPhoto);

    //holder.imgPhoto.setImageResource(Integer.valueOf(book.getPhoto()));
    holder.tvName.setText(book.getName());
    holder.tvDetail.setText(book.getTitle());

    holder.itemView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            onItemSelected.onSelected(book);
        }
    });
}

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

public interface OnItemSelected {
    void onSelected(Book book);
   }

}

Это моя проблема

My problem is, My image from drawable can't show in my Recylerview (mode list) and my detail page

2019-09-26 16: 06: 05.261 2397-2397 /?E / PhoneState: iconId равно 0android.widget.ImageView {e32f384 G.ED ..... ...... ID 0,0-10,28 # 7f0900e3 app: id / data_inout} 2019-09-26 16:06: 05.261 2397-2397 /?E / PhoneState: iconId: 0android.widget.ImageView {badc3f0 G.ED ..... ...... I.0,0-0,0 # 7f0900e3 app: id / data_inout} 2019-09-26 16: 06: 07.342 2397-2397 /?E / PhoneState: iconId равно 0android.widget.ImageView {e32f384 G.ED ..... ...... ID 0,0-10,28 # 7f0900e3 app: id / data_inout} 2019-09-26 16:06: 07.343 2397-2397 /?E / PhoneState: iconId: 0android.widget.ImageView {badc3f0 G.ED ..... ...... I.0,0-0,0 # 7f0900e3 app: id / data_inout} 2019-09-26 16: 06: 13.235 2397-2397 /?E / PhoneState: iconId равно 0android.widget.ImageView {e32f384 G.ED ..... ...... ID 0,0-10,28 # 7f0900e3 app: id / data_inout} 2019-09-26 16:06: 13.235 2397-2397 /?E / PhoneState: iconId: 0android.widget.ImageView {badc3f0 G.ED ..... ...... I.0,0-0,0 # 7f0900e3 приложение: id / data_inout}

1 Ответ

0 голосов
/ 26 сентября 2019

Попробуйте использовать этот код на вашем onBindViewHolder методе

@Override
public void onBindViewHolder(@NonNull ListViewHolder holder, int position) {
    final Book book = listbook.get(position);

    System.out.println("Data Photo : " + book.getPhoto());
    int drawableResourceId = this.getResources().getIdentifier(book.getPhoto(), "drawable", holder.itemView.getContext().getPackageName()));
    Glide.with(holder.itemView.getContext())
            .load(drawableResourceId)
            .apply(new RequestOptions().override(55,55))
            .into(holder.imgPhoto);

    holder.tvName.setText(book.getName());
    holder.tvDetail.setText(book.getTitle());

    holder.itemView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            onItemSelected.onSelected(book);
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...