在listview中有个进度条
进度条会根据进度值的不同,显示不同的颜色
listview第一次生成的时候正常
但是listview刷新的时候,进度条的颜色值会设不进去
代码如下,其中如果将代码pgsignal.setProgress(progress);放在
pgsignal.setProgressDrawable(getResources().getDrawable(R.drawable.progress_bar_gray));
之前的话,第一次设置的时候drawable就设置不进去
@Override
        public View getView(int arg0, View arg1, ViewGroup arg2) {
         View Temp = null;
         if (null == arg1) {
         Temp = mInflater.inflate(R.layout.wirelesslist_item, arg2,false);
         } else {
         Temp = arg1;
         }
            
            ScanResult info = lsScanResult.get(arg0);
   
                        ProgressBar pgsignal = (ProgressBar) Temp.findViewById(R.id.pgsignal);
            int progress = lsScanResult.get(arg0);       
            if (progress  < 10) {
             pgsignal.setProgressDrawable(getResources().getDrawable(R.drawable.progress_bar_gray));
            } else if ((progress   >= 10) && (info.level < 40)) {
             pgsignal.setProgressDrawable(getResources().getDrawable(R.drawable.progress_bar_yellow));
            } else if (info.level >= 40) {
             pgsignal.setProgressDrawable(getResources().getDrawable(R.drawable.progress_bar_green));
            }
            
            if (progress > pgsignal.getMax()) {
             progress = pgsignal.getMax();
            } else if (progress < 0) {
             progress = 0;
            }
            pgsignal.setProgress(progress);            return Temp;
        }
    }有没有什么办法可以解决
我目前想到的只有每次getview都产生一个新的view ,但是效率明显很低
求其他解决办法

解决方案 »

  1.   

    把它写成主线程的 内部类,  pgsignal 改成全局变量 在外面修改啊
      

  2.   

    listview的每个item里面都有进度条
    难道都到外面去更新么
    外面更新也不见得有用啊listview里其他图片,文字设置都可以的
    就进度条出现不对
      

  3.   

    找到解决办法了。
    论坛上以前有人问过
    给链接http://topic.csdn.net/u/20110325/11/49b3fb96-ccf3-4c38-b000-c0411637954d.html
    不过好像偶尔还是会出现drawable没画出来的现象