如何使用ProgressBar?

时间:2012-07-24 20:40:08

标签: android android-progressbar

我有一个搜索功能(使用网络服务),需要一段时间才能将数据加载到我的虚增布局。我想显示一个ProgressBar,直到从Web服务获取数据。这是一个很小的时间间隔,因此我不会使用ProgressDialog。我已经浏览了很多帖子和 dev 指南,但我无法找到在我的应用中使用它的方法。我的布局中有一个Spinner。一旦我从微调器下拉列表中选择了一个项目,我就将字符串传递给搜索函数,该函数将获取数据并将数据加载到膨胀的布局中。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        Selection = spinner.getSelectedItem().toString();           

        search(Selection);
    }

我按照 dev 指南中的说明创建了一个ProgressBar处理程序。

private ProgressBar mProgress =  new ProgressBar(SearchActivity.this, null, android.R.attr.progressBarStyleSmall);
private int mProgressStatus = 0;

private Handler mHandler = new Handler();

并说这是一个用于显示ProgressBar

的新主题
new Thread(new Runnable() {
         public void run() {
             while (mProgressStatus < 100) {
                 mProgressStatus = doWork();

                 // Update the progress bar
                 mHandler.post(new Runnable() {
                     public void run() {
                         mProgress.setProgress(mProgressStatus);
                     }
                 });
             }
         }
     }).start();

如何跟踪搜索功能的进度以显示ProgressBar

感谢您阅读

2 个答案:

答案 0 :(得分:2)

您应该使用AsyncTask而不是线程。通过asyncTask,您可以在UI线程上运行preexecutepostexecutepublishprogress,并在后台运行doInBackgroundgoogle上有很多内容。

试试这个one

答案 1 :(得分:1)

使用AsyncTask代替线程。它更容易使用,并提供内置机制以通知进度更新。

请看这个问题以获得完整的样本:

Download a file with Android, and showing the progress in a ProgressDialog