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 をリサイクルしているため、プログレス サークルが表示されます (listview は convertView パラメータで以前に使用されたビューを送信し、メモリ使用量を削減します)。次の 2 つの解決策があります。

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)「return convertview」の前にビューのprogressWheelを非表示にします

于 2012-04-14T15:09:33.670 に答える