Android Volley - Afficher la barre de progression dans listview de l'adaptateur lors du chargement de l'image
J'ai essayé de charger une image à partir du réseau avec Volley
dans l'élément de liste. Alors que le téléchargement de l'image, la barre de progression montre, une fois terminé, il convient de se cacher.
Voici ma carte:
public class NewsAdapter extends CursorAdapter{
public NewsAdapter(Context context, Cursor c) {
super(context, c, true);
}
@Override
public Cursor getItem(int position) {
return (Cursor) super.getItem(position);
}
@Override
public void bindView(View view, final Context context, Cursor cursor) {
final NetworkImageView imgNewsItem = (NetworkImageView) view.findViewById(R.id.imgNewsItem);
final ProgressBar progressNewsList = (ProgressBar) view.findViewById(R.id.progressNewsList);
progressNewsList.setVisibility(View.VISIBLE);
imgNewsItem.setVisibility(View.GONE);
Ln.d("get news image: %s", cursor.getString(cursor.getColumnIndex(News.IMAGE_COLUMN)));
ImageCacheManager.getInstance().getImageLoader().get(cursor.getString(cursor.getColumnIndex(News.IMAGE_COLUMN)), new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
Ln.e(error);
progressNewsList.setVisibility(View.GONE);
imgNewsItem.setVisibility(View.VISIBLE);
imgNewsItem.setImageResource(R.drawable.news_default_image);
}
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
progressNewsList.setVisibility(View.GONE);
imgNewsItem.setVisibility(View.VISIBLE);
imgNewsItem.setImageBitmap(response.getBitmap());
}
});
}
@Override
public View newView(Context arg0, Cursor arg1, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View retView = inflater.inflate(R.layout.row_view, parent, false);
return retView;
}
}
J'ai débogué et a constaté que le Volley-téléchargement et le cache de l'image bitmap est ok, mais l'affichage de l'image ne s'affiche pas.
Mon élément de mise en page ressemble à ceci:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp" >
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/imgNewsItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/news_default_image"
android:visibility="gone" />
<ProgressBar
android:id="@+id/progressNewsList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
>
</ProgressBar>
</LinearLayout>
La ImageCacheManager partir de cet exemple: https://github.com/rdrobinson3/VolleyImageCacheExample
Pourriez-vous me dire où je me trompe?. Merci à l'avance.
Mise à jour: l'autre, la barre de progression n'est pas montré lors du téléchargement.
Honnêtement, je ne vois pas comment vous en suivant l'exemple? Je pense que vous ne devriez pas appeler la
Mais j'ai besoin de l'auditeur pour masquer la barre de progression.
Pourquoi vous vous cachez la
Parce que je ne suis pas d'afficher une boîte de dialogue de progression. Je veux juste une barre de progression circulaire lors du téléchargement de l'image.
get
du chargeur.. Avez-vous simplement essayé: imgNewsItem.setImageUrl(<url>, ImageCacheManager.getInstance().getImageLoader());
Mais j'ai besoin de l'auditeur pour masquer la barre de progression.
Pourquoi vous vous cachez la
ProgressBar
si vous avez dismiss();
.Parce que je ne suis pas d'afficher une boîte de dialogue de progression. Je veux juste une barre de progression circulaire lors du téléchargement de l'image.
OriginalL'auteur R4j | 2013-10-18
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de changer ImageListener.onResponse méthode à la suivante:
Ce qui suit est la java doc pour la ImageListener:
OriginalL'auteur Marco RS
Si vous utilisez la méthode de chargement de l'Image et de la ProgressBar a été initialisée dans différentes méthode, puis cacher ProgressBar sur onResponse(...) peut ne pas fonctionner si vous avez besoin de passer ProgressBar en tant que paramètre.
imageUrl.equals(null)
va jeter NullpointerException si imageUrl est null, vous devez utiliserimageUrl != null
. Deuxièmement, en passant ProgressBar comme paramètre n'a aucun sens, c'est comme mon bindView méthode.Je suis d'accord avec vous premier point et j'ai édité ma réponse. Votre 2ème point, vous sont en cours d'initialisation et de traiter avec ProgressBar à l'intérieur de bindview méthode uniquement si il n'y a pas de problème, mais si vous êtes en utilisant différentes méthodes et là, vous faites affaire avec ProgressBar qui a été initialisée dans bindview, il ne fonctionnera pas.
OriginalL'auteur Sushil
Changement
LinearLayout
àFrameLayout
et de changement afin de faire des progrès avant networkimageview comme celaCode Java
Je suis aide dans recycleview adaptateur
MySingleton Classe
OriginalL'auteur Mina Fawzy