2015-01-08 109 views
0

我正在开发一个android应用程序。在垂直进度条上工作。
当我添加新项目时,该项目与某个百分比值(例如30%)相关联。
进度条需要从0%更新到30%。如果我添加另一个百分比值为40%的项目,则进度条需要update from 30% to 70%(30+40)
我该怎么做。示例代码会很有帮助。我在这里发布了我的代码。进度条更新android

public class VerticalProgressBar extends Activity { 

Button buttonStart; 
ProgressBar vProgressBar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.verticalprogressbar); 
    buttonStart = (Button) findViewById(R.id.start); 
    vProgressBar = (ProgressBar) findViewById(R.id.vprogressbar); 

    buttonStart.setOnClickListener(new Button.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      buttonStart.setClickable(false); 
      new asyncTaskUpdateProgress().execute(); 
     } 
    }); 

} 

public class asyncTaskUpdateProgress extends AsyncTask<Void, Integer, Void> { 

    int progress; 

    @Override 
    protected void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     buttonStart.setClickable(true); 

    } 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     progress = 0; 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
     // TODO Auto-generated method stub 
     vProgressBar.setProgress(values[0]); 
    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     // TODO Auto-generated method stub 
     while (progress < 100) { 

      progress++; 
      publishProgress(progress); 
      SystemClock.sleep(100); 

     } 
     return null; 

     } 

    } 

    } 

回答

0

onProgressUpdate,用这个值添加到当前进度:

vProgressBar.setProgress(vProgressBar.getProgress() + values[0]); 

而在doInBackground,你可能有你的 “商品”,是这样的:

publishProgress(item.getPercentageValue()); 
+0

我'对不起。我了解了代码的第一行。但不确定这里的'物品'是什么以及它是如何工作的?谢谢。 – user3782869

+0

我猜这一点真的是因为它不在你的代码中......但你提到你想“添加另一个具有百分比值的项目”,所以我说的百分比值是你会传递给'publishProgress '。 – James