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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to