简体   繁体   English

如何在 RecyclerView 中显示图像?

[英]How can I show an image in a RecyclerView?

I want to show image in Recyclerview( mode list) from drawable, but that's image can't show, how can I fix it?我想在可绘制的 Recyclerview(模式列表)中显示图像,但该图像无法显示,我该如何解决?

this is my ListBookAdapter.java这是我的 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);
   }

}

This is My Problem这是我的问题

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/? 2019-09-26 16:06:05.261 2397-2397/? E/PhoneState: iconId is 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{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 is 0android.widget.ImageView{badc3f0 G.ED..... ......I. 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/? 0,0-0,0 #7f0900e3 app:id/data_inout} 2019-09-26 16:06:07.342 2397-2397/? E/PhoneState: iconId is 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{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 is 0android.widget.ImageView{badc3f0 G.ED..... ......I. 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/? 0,0-0,0 #7f0900e3 app:id/data_inout} 2019-09-26 16:06:13.235 2397-2397/? E/PhoneState: iconId is 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{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 is 0android.widget.ImageView{badc3f0 G.ED..... ......I. E/PhoneState:iconId 为 0android.widget.ImageView{badc3f0 G.ED..... ......I. 0,0-0,0 #7f0900e3 app:id/data_inout} 0,0-0,0 #7f0900e3 app:id/data_inout}

Try with this code on your onBindViewHolder method尝试在您的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);
        }
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM