2013-10-11 1 views
2

J'ai un problème avec un Volley et un ListView. Peut-être que je ne comprends pas comment Volley devrait fonctionner ... Regardez ici, ce code est de mon activité:Volley charge les mêmes vignettes

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mRequestQueue = Volley.newRequestQueue(this); 
    imageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache()); 

    items = createItemList(); 

    expListView = (ListView) findViewById(R.id.listView); 
    ListAdapter listAdapter = new ListAdapter(); 
    expListView.setAdapter(listAdapter); 
} 

Je configuration Volley.newRequestQueue(this) et ImageLoader avec BitmapLruCache (the same here).

Lorsque dans mon ListAdapter i passer outre getView()

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) 
      convertView = infalInflater.inflate(R.layout.menu_item, null); 
     final ImageView ivCover = (ImageView) convertView.findViewById(R.id.icCoverThumb); 
     imageLoader.get(items.get(position).url, ImageLoader.getImageListener(ivCover, R.drawable.ic_launcher, R.drawable.ic_launcher)); 
     return convertView; 
    } 

Ici j'utilise imageLoader.get(items.get(position).url, ImageLoader.getImageListener(ivCover, R.drawable.ic_launcher, R.drawable.ic_launcher)); (est point sensible ici?).

pouces a été chargé, mais smth a mal tourné: quand l'application commence première fois, le premier élément de la vue de la liste a dupliquer ico avec l'une des icônes de l'autre ligne - http://prntscr.com/1wmrck

Merci!

Répondre

2

Difficile de se reproduire sans plus d'informations, mais je vous recommande l'utilisation de NetworkImageView pour charger les vignettes du réseau et d'ailleurs, je voudrais utiliser un « ViewHolder » pour améliorer les performances de votre ListView

Ceci est un exemple ArrayAdapter pour afficher les tweets sur un ListView

... 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.tweet_list_item, null); 
     holder = new ViewHolder(); 
     holder.imageView = (NetworkImageView) convertView.findViewById(R.id.twitterUserImage); 
     //set more views (username, text, date ...) 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    //get the current element from the data array 
    Tweet currentTweet = getItem(position); 

    //set data into the views 
    holder.imageView.setImageUrl(currentTweet.getUser().getProfileImageUrl(), VolleyManager.getImageLoader()); 
    //... 


    return convertView; 
} 

private static class ViewHolder { 
    private NetworkImageView imageView; 
    //other views... 
} 
+0

Je vais vérifier. Si c'est le cas, je vais ajouter plus d'informations. Merci! – validcat

+0

sur le modèle de viewholder je sais, ouais – validcat

+0

Yah! Merci beaucoup, ça marche! J'ai changé ImageView en NetworkImageView et ai défini l'image pendant que vous décrivez d holder.imageView.setImageUrl (URL, VolleyManager.getImageLoader()); – validcat

Questions connexes