0

我在列表视图中有一个自定义控件,用于在单击列表项时显示播放进度。

当我单击一个列表项并播放声音时,我会显示一个进度圈,但是如果我滚动列表视图,这个自定义控件会显示上面的每 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;
}

提前致谢!

4

1 回答 1

0

出现进度圈是因为您正在回收 convertView(列表视图在 convertView 参数上向您发送以前使用的视图以减少内存使用)。有两种解决方案:

A)不要回收convertView(次优)

代替:

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

和:

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

B)在“返回转换视图”之前隐藏视图上的progressWheel

于 2012-04-14T15:09:33.670 回答