[英]how to add spinner before loading Images in recyclerview item
I am using Data Binding to Getting Layout and Glide Library to load Images from Adapter class. 我正在使用“数据绑定到获取布局和滑行库”从Adapter类加载图像。 Now I want to attach progress spinner before loading images on each row but currently, I don't know how to load ??
现在,我想在每行加载图像之前附加进度条,但是目前,我不知道如何加载? Thanks
谢谢
Here is my Adapter class 这是我的适配器类
public class ImageSetAdapter extends RecyclerView.Adapter<ImageSetAdapter.PictureItemHolder> {
List<HouseModelSet> data;
HousesListener housesListener;
public ImageSetAdapter(List<HouseModelSet> data) {
this.data = data;
}
@Override
public PictureItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
/*View v = inflater.inflate(R.layout.item_home_picture, parent, false);
ItemHomePictureBinding itemHomePictureBinding = DataBindingUtil.inflate(inflater, R.layout.item_home_picture, parent, false);*/
ItemHomePictureBinding binding = ItemHomePictureBinding.inflate(inflater, parent, false);
return new PictureItemHolder(binding.getRoot());
}
@Override
public void onBindViewHolder(PictureItemHolder holder, final int position) {
HouseModelSet houseSetModel = data.get(position);
List<PostModel> postModels = houseSetModel.getHouseModels();
if (postModels.size() > 4) {
final PostModel hm1 = postModels.get(0);
final PostModel hm2 = postModels.get(1);
final PostModel hm3 = postModels.get(2);
final PostModel hm4 = postModels.get(3);
final PostModel hm5 = postModels.get(4);
holder.binding.house1.setHouse(hm1);
holder.binding.house2.setHouse(hm2);
holder.binding.house3.setHouse(hm3);
holder.binding.house4.setHouse(hm4);
holder.binding.house5.setHouse(hm5);
holder.binding.setHouses(houseSetModel);
holder.binding.house1.getRoot().setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (housesListener != null) {
housesListener.onHouseClick(position, hm1);
}
}
});
holder.binding.house2.getRoot().setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (housesListener != null) {
housesListener.onHouseClick(position, hm2);
}
}
});
holder.binding.house3.getRoot().setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (housesListener != null) {
housesListener.onHouseClick(position, hm3);
}
}
});
holder.binding.house4.getRoot().setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (housesListener != null) {
housesListener.onHouseClick(position, hm4);
}
}
});
holder.binding.house5.getRoot().setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (housesListener != null) {
housesListener.onHouseClick(position, hm5);
}
}
});
}
}
@BindingAdapter("app:imageUrl")
public static void loadImage(ImageView imageView, String url) {
Glide.with(imageView.getContext())
.load(ApiHelper.BASE_URL + url)
.thumbnail(0.5f)
.crossFade()
.into(imageView);
}
public void setHousesListener(HousesListener housesListener) {
this.housesListener = housesListener;
}
@Override
public int getItemCount() {
return data.size();
}
public class PictureItemHolder extends RecyclerView.ViewHolder{
ItemHomePictureBinding binding;
public PictureItemHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
}
public void updateList(List<HouseModelSet> list) {
this.data = list;
notifyDataSetChanged();
}
public interface HousesListener{
void onHouseClick(int pos, PostModel houseModel);
}
}
maybe you can add listener to showing the spinner progress. 也许您可以添加侦听器以显示微调器进度。
You can change your code to this : 您可以将代码更改为此:
Glide.with(imageView.getContext())
.load(ApiHelper.BASE_URL + url)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
yourSpinnerProgress.setVisibility(View.GONE);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
yourSpinnerProgress.setVisibility(View.GONE);
return false;
}
})
.into(imageView);
And don't forget to use RelativeLayout for root of layout & add yourSpinnerProgress into your layout. 并且不要忘记使用RelativeLayout作为布局的根,并将yourSpinnerProgress添加到布局中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.