我有一个项目列表(6),我正在使用毕加索和OkHttp库在我的回收视图中下载和显示图像。使用毕加索和回收站视图来显示图像列表
我在我的回收站视图中有6个项目,其中3个(1,2,4)在服务器上有图像,项目3,5和6没有图像。但在我的回收商查看下载的项目1,2,4的图像也会显示项目3,5和6!我不知道问题在哪里。 这是从该适配器下载和加载图片与毕加索我的代码:
public class BaseListAdapter extends RecyclerView.Adapter<BaseListAdapter.ViewHolder> {
private List<PList> menuItems;
private Context mContext;
private ActivitySingleGroup activitySingleGroup;
//Bottom Sheets Views Declaration
private TextView txtSelectedProduct;
private TextView txtPRemark;
private TextView txtQty;
private EditText edtUserQty;
private Button btnBuy;
private Button btnDiscard;
private ViewPager mPager;
private CircleIndicator indicator;
public BaseListAdapter(List<PList> menuItems, Context mContext) {
this.menuItems = menuItems;
this.mContext = mContext;
this.activitySingleGroup = (ActivitySingleGroup) mContext;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView txtName;
TextView txtPrice;
ImageView imgDefault;
LinearLayout parentLayout;
CoordinatorLayout coordinatorLayout;
public ViewHolder(View v) {
super(v);
txtName = (TextView) v.findViewById(R.id.txtName);
txtPrice = (TextView) v.findViewById(R.id.txtPrice);
imgDefault = (ImageView) v.findViewById(R.id.img_defaultImage);
parentLayout = (LinearLayout) v.findViewById(R.id.parentLayout);
coordinatorLayout = (CoordinatorLayout) v.findViewById(R.id.coordinatorLayout);
}
}
@Override
public BaseListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new View
final View v = LayoutInflater.from(activitySingleGroup).inflate(R.layout.activity_normal_group_recycler, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
//Download and Load Default Image from server into imgDefault ImageView
Picasso picasso;
OkHttpClient client = null;
String url = "https://bartarinapp-irdeveloper.rhcloud.com/api/images/download/";
//Handel situations that default image variables will be null
if (menuItems.get(position).getPDefaultImage() != null &&
menuItems.get(position).getPDefaultImage().getDefault() != null) {
if ((menuItems.get(position).getPDefaultImage().getDefault()) &&
(menuItems.get(position).getPDefaultImage().getIId() != null)) {
url += menuItems.get(position).getPDefaultImage().getIId();
client = ServerClass.downloadImage(
menuItems.get(position).getPDefaultImage().getIId(),
holder.imgDefault,
activitySingleGroup);
picasso = new Picasso.Builder(mContext)
.downloader(new OkHttp3Downloader(client))
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
Log.i("I_ERROR", "Error is: " + exception.toString());
}
})
.build();
} else {
url = null;
picasso = new Picasso.Builder(mContext)
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
Log.i("I_ERROR", "Error is: " + exception.toString());
}
})
.build();
}
} else {
url = null;
picasso = new Picasso.Builder(mContext)
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
Log.i("I_ERROR", "Error is: " + exception.toString());
}
})
.build();
}
picasso.cancelRequest(holder.imgDefault);
if (url != null && url.length() > 0) {
//put here picaso image load code
picasso.load(url)
.placeholder(R.drawable.loading_01)
.error(R.drawable.loading_02)
.into(holder.imgDefault);
} else {
holder.imgDefault.setImageDrawable(null);
}
holder.txtName.setText(menuItems.get(position).getPName());
holder.txtPrice.setText(String.valueOf(menuItems.get(position).getPPrice()));
holder.parentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
prepareBottomSheet(view, position, holder.coordinatorLayout);
}
});
}
@Override
public int getItemCount() {
if (menuItems.size() > 0) {
return menuItems.size();
} else {
return 0;
}
}
谢谢您的帮助。
你得到什么错误请显示 –
是一个全球变量的网址?并在加载图片之前,检查URL是否为空。 –
不,我只是从服务器获取每个项目的Id。我检查了它们,它们是正确的。 – Ehsan