2012-04-14 14 views
0

Ich habe ein benutzerdefiniertes Steuerelement in einer Listenansicht, um den Fortschritt anzuzeigen, wenn ich in ein Listenelement klicke.Wiederholte animierte benutzerdefinierte Steuerung beim Scrollen von Listenansicht in Android

Wenn ich in einen Listeneintrag klicke und wenn der Ton abgespielt wird, zeige ich einen Fortschrittskreis an, aber wenn ich das Listenansicht dieses benutzerdefinierten Steuerelements scrolle, wird es alle 6 Zeilen oben angezeigt.

Das ist mein Problem: http://i43.tinypic.com/34dsx2e.png

Dies ist getView mein CustomAdapter:

public View getView(int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 

    if (convertView == null) { 
     mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);   
     convertView = mInflater.inflate(mResourceId, parent, false); 
     holder = new ViewHolder(convertView); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.position = position; 


    Item item = getItem(position); 
    holder.progressWheel.setPosition(position); 
    holder.textViewTitle.setText(item.getName()); 
    return convertView; 
} 

Vielen Dank im Voraus!

Antwort

0

Der Fortschrittskreis wird angezeigt, weil Sie die convertView recyceln (die Listview sendet Sie an den Parameter convertView einer zuvor verwendeten Ansicht, um die Speichernutzung zu reduzieren). Es gibt zwei Lösungen:

A) Setzen Sie das convertView nicht recyceln (Unter obtimal)

ersetzen:

if (convertView == null) { 
    mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);   
    convertView = mInflater.inflate(mResourceId, parent, false); 
    holder = new ViewHolder(convertView); 
    convertView.setTag(holder); 
} else { 
    holder = (ViewHolder) convertView.getTag(); 
} 

mit:

mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);   
convertView = mInflater.inflate(mResourceId, parent, false); 
holder = new ViewHolder(convertView); 

B) ausblenden progressWheel auf die Ansicht vor "Rückkehr Convertview"

Verwandte Themen