我正在开发一个android应用程序,它使用一个listview,其中每一行由一个文本视图和一个进度条组成。除非用户必须滚动一长串列表,否则一切都会顺利进行。
ProgressBars开始接受屏幕上当前不可见的其他ProgressBars的进度。
我知道这是一个常见的问题,源于getview的实现,但是我想知道progressbar的最佳操作方案是什么。
GetView:

public View getView(int position, View convertView, ViewGroup parent){

        View row = convertView;
        ViewWrapper wrapper;
        ProgressBar myProgressBar;
        int initProgress = myData.get(position).getProgress();

        if (row == null){
            LayoutInflater inflater = context.getLayoutInflater();
            row = inflater.inflate(R.layout.row, null);

            wrapper = new ViewWrapper(row);
            row.setTag(wrapper);
        }

        else{
            wrapper = (ViewWrapper)row.getTag();

        }

        RowModel model = getModel(position);
        wrapper.getPid().setText(model.toString());
        myProgressBar = wrapper.getProgressBar();
        myProgressBar.setProgress(initProgress);
        myProgressBar.setMax(100);

        myProgressBar.setTag(new Integer(position));

        return row;
    }

ViewWrapper:
public class ViewWrapper {
    View base;
    TextView pid = null;
    ProgressBar pb= null;

    ViewWrapper(View base){
        this.base = base;
    }

    TextView getPid(){
        if(pid == null){
            pid = (TextView)base.findViewById(R.id.pid);
        }

        return(pid);
    }

    ProgressBar getProgressBar(){
        if(pb== null){
            pb= (ProgressBar)base.findViewById(R.id.progressbar);
        }

        return(pb);
    }
}

这个问题似乎与以下方面有关:
myProgressBar = wrapper.getProgressBar();

因为progressbar开始获得回收progressbar的行为。不过,我希望它有自己的行为。
最好的办法是什么?谢谢。

最佳答案

您可能需要每次都对布局进行充气,而不是重用传入的convertview。这不应该是个问题,除非你有很多行。

10-05 18:03