2016-08-12 38 views
0

我正在加載列表ListView使用AsyncTask顯示ProgressBar。但在我的代碼ProgressBar現在顯示。不能理解這個問題。ProgressBar沒有顯示在AsyncTask

我使用了與slidenerd相同的代碼,但在視頻代碼工作中,但我的代碼似乎不工作。

Video Link

public class MainActivity extends AppCompatActivity { 

    ListView listView; 
    String[] items = {"Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon", 
      "Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon", 
      "Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon", 
      "Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     requestWindowFeature(Window.FEATURE_PROGRESS); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.listView); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>()); 
     listView.setAdapter(adapter); 
     new JSONTask().execute(); 
    } 

    public class JSONTask extends AsyncTask<Void, String, Void> { 

     private ArrayAdapter<String> adapter; 
     private int count = 0; 

     @Override 
     protected void onPreExecute() { 
      adapter = (ArrayAdapter<String>) listView.getAdapter(); 
      setProgressBarIndeterminateVisibility(true); 
      setProgressBarVisibility(true); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      for (String i : items) { 
       publishProgress(i); 
       try { 
        Thread.sleep(200); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
      return null; 
     } 

     @Override 
     protected void onProgressUpdate(String... values) { 
      adapter.add(values[0]); 
      count++; 
      setProgress((int) (((double) count/items.length) * 10000)); 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      setProgressBarIndeterminateVisibility(false); 
      setProgressBarVisibility(false); 
      Toast.makeText(getApplicationContext(), "Done!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+1

也許你想嘗試使用ProgressDialog呢?只需創建它並調用.show()或.hide(); – Linxy

回答

0

setProgressBarVisibility()documentationsetProgressBarIndeterminateVisibility()

此方法是在API級棄用24.

不再支持 在API開始21.

您應該改用ProgressDialog

0

你應該使用簡單的ProgressDialog 例如:

ProgressDialog myPd = ProgressDialog.show(context, "Please wait", "Uploading Database to Cloud...", true); 
myPd.setCancelable(false);