简体   繁体   English

ProgressBar没有显示在AsyncTask中

[英]ProgressBar not showing in AsyncTask

I am loading list in ListView using AsyncTask by showing ProgressBar . 我通过显示ProgressBar使用AsyncTaskListView加载列表。 But in my code the ProgressBar is now showing. 但是现在在我的代码中显示了ProgressBar Cant understand the problem. 不能理解问题。

I used the same code as in slidenerd but in the video code works but my code doesn't seem to work. 我使用了与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();
        }
    }
}

From the documentation of setProgressBarVisibility() and setProgressBarIndeterminateVisibility() : setProgressBarVisibility()setProgressBarIndeterminateVisibility()文档中:

This method was deprecated in API level 24. API级别24中不推荐使用此方法。

No longer supported starting in API 21. 从API 21开始不再受支持。

You should use a ProgressDialog instead. 您应该改用ProgressDialog

you should use simple ProgressDialog for example : 您应该使用简单的ProgressDialog例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM