我正在尝试使用Fresco库将图像(从JSON数据检索)加载到RecyclerView中的每个项目中。对于每个项目,仅显示占位符图像,而不显示我想要的URL中的图像。
我在BookListAdapter构造函数中有data(iris)
lmfunction(iris,Sepal.Length,Petal.Length,1:150)
Error in eval(predvars, data, env) : object 'Sepal.Length' not found
,在ViewHolder构造函数中有Fresco.initialize(mContext);
。我的所有其他JSON数据都显示在RecyclerView CardView项目中。
draweeView = view.findViewById(R.id.bookCoverDrawee
Log.d语句显示URL正确,但是未将图像设置为URL中的图像。
在logcat中,它确实说Fresco已经被初始化了,但是我不知道要把它放在哪里(我试图在另一个类和ViewHolder构造函数中初始化适配器的地方初始化它)。我也尝试过使用毕加索(因为不需要我对其进行初始化),但是没有任何显示。看着Fresco's RecyclerView adapter sample,我不知道自己在做什么错。
如果可以使用,我不介意使用其他库。
请让我知道是否需要更多信息。预先感谢!
更新:根据要求添加了XML
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
Book book = bookList.get(i);
viewHolder.singleListRowBinding.setBook(book);
Log.d(TAG, "Image URL: " + book.getStrImageURL());
if (book.getStrImageURL() != null) {
Uri uri = Uri.parse(book.getStrImageURL());
viewHolder.draweeView.setImageURI(uri);
}
}
完整文件:
答案 0 :(得分:0)
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
Book book = bookList.get(i);
viewHolder.singleListRowBinding.setBook(book);
Log.d(TAG, "Image URL: " + book.getStrImageURL());
if (book.getStrImageURL() != null) {
Uri imageUri = Uri.parse(book.getStrImageURL());
ImageRequest request = ImageRequest.fromUri(imageUri);
DraweeController controller = Fresco.newDraweeControllerBuilder().setImageRequest(request).setOldController( viewHolder.draweeView.getController()).build();
viewHolder.draweeView.setController(controller);
}
}