我正在使用带有Glide的ProgressBar库来为GridView中的每个项目加载动画点指示器,这可以正常工作,但是我无法为完成下载的每个项目隐藏ProgressBar。
奇怪的行为是,无论哪个项目完成,其加载都将导致进度条仅针对最后一个项目隐藏,进度条将为所有其他已完成的项目继续进行无穷的动画处理。
总而言之,我希望进度条具有与Gilde占位符相同的行为。
XML代码:
<com.wang.avi.AVLoadingIndicatorView
android:id="@+id/avi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:indicatorColor="@color/skyblue"
app:indicatorName="BallPulseIndicator"
style="@style/AVLoadingIndicatorView.Small"
/>
public CustomAdapter_GridViewMainFile(ActivityVideo_Cloud contextActivity, String[] stringArr_File, String[] stringArr_Date) {
// TODO Auto-generated constructor stub
context = contextActivity;
strArr_File = stringArr_File;
strArr_Date = stringArr_Date;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (strArr_File != null) {
return strArr_File.length;
} else {
return 0;
}
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public class Holder {
AVLoadingIndicatorView avi;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
holder = new Holder();
if (convertView == null)
{
convertView = inflater.inflate(R.layout.activity_video_gridview_single_checkbox, null);
}
holder.avi = convertView.findViewById(R.id.avi);
Glide.with(getBaseContext())
.load(strArr_File[position])
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
holder.avi.hide();
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
holder.avi.hide();
return false;
}
})
.into(holder.ivImage);
...