Interesting… I usually just create a new View every time in getView… so I've never run into that.
On Saturday, July 28, 2012 6:10:50 AM UTC-5, Sergio Panico wrote: > > Hi all, > I thank all for your answers. > > I've understood the "strange" behaviour that doesn't makes my ListView to > refreshes correctly. > > Here is the link where I've found the solution: > https://groups.google.com/forum/?fromgroups#!topic/android-developers/2Ub4yhyKumM > > This topic clearly explains that, when the callback method "getView" is > called, the parameter "convertView" is null only when ListView tries to > draw the first 5 items, from "A" to "E". When I scroll down the content of > the list, and the ListView draws the items 6 and 7, it "reuses" the views > previoulsy created, hence "convertView" is not null and my getView > implementation goes into "else" branch. > > What I've missed was to bind the "old" view, with the "new" model item > getting showed. So the fix was simply to add, in this branch, the update of > the bind between "recycled" view and model item. > > HTH > Sergio > > > > Il giorno giovedì 26 luglio 2012 12:59:05 UTC+2, Sergio Panico ha scritto: >> >> Hi all, >> I need your help to understand the refresh behaviour of a ListView where >> I've defined a my custom view for the ListView's items. >> >> I think It's better explain it with an example: >> my adapter contains 7 items: A, B, C, D, E, F, G correctly initialized, >> filled and working. The associated ListView shows 5 (out of 7) items: A, B, >> C, D, E. >> The problem is that, when I scroll down the ListView's content instead of >> showing me items F and G, I've got A and B items again. I understood that >> this is "only" a viewing issue becouse the model elements associated with >> the last two items, correctly belong to F and G items. :| >> >> Following the ovveride of getView(...) method of my adapter (extending >> BaseAdapter): >> >> @Override >> public View getView(int position, View convertView, ViewGroup parent) >> { >> MyItemView miv = (( MyItemView ) convertView); >> >> if (context == null) return null; >> >> if (convertView == null) { >> miv = new MyItemView (........); >> ..... >> } else { >> miv.refreshView(); //refresh the view content >> } >> >> return miv; >> } >> >> and the refreshView() method of MyItemView (extending LinearLayout): >> >> @Override >> public void refreshView() { >> label1.setText(......); >> label2.setText(......); >> label2.setText(......); >> >> invalidate(); >> } >> >> Thanks a lot to all! >> Bye >> Sergio >> > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

