2012-04-14 67 views
0

我有一个列表视图中的自定义控件来显示播放进度,当我点击一个listitem。重复的动画自定义控件在android中滚动列表视图

当我点击一个listitem,当它播放声音时,我会显示一个进度圈,但是如果我滚动listview这个自定义控件,它会显示上面的每行6行。

这是我的问题: http://i43.tinypic.com/34dsx2e.png

这是我CustomAdapter的getView:

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; 
} 

提前感谢!

回答

0

因为您正在回收convertView(listview将convertView参数发送给您以前使用过的视图以减少内存使用量),因此会显示进度圈。解决办法有两个:

A)不回收的convertView(子obtimal)

替换:

​​

有:

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

B)隐藏在该progressWheel查看“return convertview”之前