Я хочу показать progressBar для загрузки Image in Adapter для ListView. И когда изображение загружается progressBar не уходит, и изображение не отображается. Когда я прокручиваю вверх и вниз, он работает отлично. И я не знаю, как это сделать. Извините за мой английский. Я поставил скриншоты для лучшего понимания.Picasso with Adapter
Вот метод от адаптера:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder =null;
if(convertView==null){
viewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.programs_item, null);
viewHolder.programName = (TextView) convertView.findViewById(R.id.programName);
viewHolder.programDuration = (TextView) convertView.findViewById(R.id.programDuration);
viewHolder.programImg = (ImageView) convertView.findViewById(R.id.programImg);
viewHolder.programImgLoading = (ProgressBar) convertView.findViewById(R.id.programImgLoading);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) convertView.getTag();
}
String name = getItem(position).getName();
Log.d("NAMELOG", "" + getItem(position).getName());
long duration1 = (getItem(position).getDuration());
long duration = TimeUnit.SECONDS.toMinutes(duration1);
Log.d("TIMEEEE",""+duration+" "+duration1);
String duration2 = String.valueOf(duration)+ " min";
viewHolder.programName.setText(name);
viewHolder.programDuration.setText(duration2);
File dir = new File(FILE_PATH);
File imgFile = new File(dir, getItemId(position) + ".png");
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
viewHolder.setImg(myBitmap);
}
else if (isNetworkConnected()) {
Log.d("MYLOGGGGGGGG", MYurl.BASE_URL + "/" + String.valueOf(getItem(position).getImgLarge()) + "");
final ViewHolder finalViewHolder = viewHolder;
Picasso.with(mContext)
.load(MYurl.BASE_URL + "/" + getItem(position).getImgMedium())
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
finalViewHolder.programImgLoading.setVisibility(View.INVISIBLE);
finalViewHolder.setImg(bitmap);
File dir = new File(FILE_PATH);
if (!dir.exists())
dir.mkdirs();
File file = new File(dir, getItemId(position) + ".png");
FileOutputStream fOut = null;
try {
Log.d("MYLOGSFILE", FILE_PATH + " " + file.getName());
fOut = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
bitmap.compress(Bitmap.CompressFormat.PNG, 80, fOut);
try {
fOut.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
finalViewHolder.programImg.setImageResource(R.drawable.noimage);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
finalViewHolder.programImg.setImageBitmap(null);
finalViewHolder.programImgLoading.setVisibility(View.VISIBLE);
}
});
}
else{
viewHolder.programImg.setImageResource(R.drawable.noimage);
}
return convertView;
}
в вашем методе onBitmapLoaded (Bitmap bitmap, Picasso.LoadedFrom from) попробуйте это: finalViewHolder.programImgLoading.setVisibility (View.GONE); – KERiii
, что не помогает – Roman
что-то вроде onBitmapLoaded не работает. – Roman