[英]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.