How to implement progressBar while loading data?

后端 未结 4 1432
执笔经年
执笔经年 2021-02-06 08:24

I want to implement progressBar like on the picture below.

Right now, I have AsyncTask whic is sperated from fragments classes, and I use that AsyncTask to load data, an

4条回答
  •  不知归路
    2021-02-06 09:00

    If you just want to show progress, take a look at this code. This might give you an idea:

    public class MainActivity extends Activity implements OnClickListener {
    
        myTask mytask = new myTask();
        Button button1;
        ProgressBar progressbar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            button1 = (Button) findViewById(R.id.button1);
            progressbar = (ProgressBar) findViewById(R.id.progressBar);
            button1.setOnClickListener(this);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public void onClick(View view) {
            mytask.execute();
        }
    
        class myTask extends AsyncTask {
            @Override
            protected void onPreExecute() {
                progressbar.setProgress(0);
                progressbar.setMax(100);
                int progressbarstatus = 0;
            };
    
            @Override
            protected String doInBackground(String... params) {
                for (int i = 0; i < 20; i++) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    progressbar.incrementProgressBy(10);
                }
                return "completed";
            }
    
            @Override
            protected void onPostExecute(String result) {
                // TODO Auto-generated method stub
                super.onPostExecute(result);
    
            }
    
            @Override
            protected void onProgressUpdate(String... values) {
    
                super.onProgressUpdate(values);
            }
        }
    }
    

    But if you want to show like a dialog, take a look at this code:

    public class YoutubeVideoMain extends Activity {
    
        ListView videolist;
    
        ArrayList videoArrayList = new ArrayList();
    
        ArrayAdapter videoadapter;
        Context context;
        String feedURL = "https://gdata.youtube.com/feeds/api/users/twistedequations/uploads?v=2&alt=jsonc&start-index=1&max-results=5";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            context = this;
            setContentView(R.layout.youtubelist);
            videolist = (ListView) findViewById(R.id.videolist);
    
            videoadapter = new ArrayAdapter(this, R.layout.video_list_item,
                    videoArrayList);
    
            videolist.setAdapter(videoadapter);
            VideoListTask loadertask = new VideoListTask();
            loadertask.execute();
    
        }
    
        private class VideoListTask extends AsyncTask {
    
            ProgressDialog dialogue;
    
            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                dialogue.dismiss();
    
                videoadapter.notifyDataSetChanged();
            }
    
            @Override
            protected void onPreExecute() {
                dialogue = new ProgressDialog(context);
                dialogue.setTitle("Loading items..");
                dialogue.show();
                super.onPreExecute();
    
            }
    
            @Override
            protected Void doInBackground(Void... params) {
    
                HttpClient client = new DefaultHttpClient();
                HttpGet getRequest = new HttpGet(feedURL);
                try {
                    HttpResponse response = client.execute(getRequest);
                    StatusLine statusline = response.getStatusLine();
                    int statuscode = statusline.getStatusCode();
    
                    if (statuscode != 200) {
    
                        return null;
                    }
    
                    InputStream jsonStream = response.getEntity().getContent();
    
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(jsonStream));
    
                    StringBuilder builder = new StringBuilder();
                    String line;
    
                    while ((line = reader.readLine()) != null) {
    
                        builder.append(line);
    
                    }
                    String jsonData = builder.toString();
    
    
    
                    JSONObject json = new JSONObject(jsonData);
    
    
                    JSONObject data = json.getJSONObject("data");
    
                    JSONArray items = data.getJSONArray("items");
    
                    for (int i = 0; i < items.length(); i++) {
    
    
                        JSONObject video = items.getJSONObject(i);
    
    
    
                        videoArrayList.add(video.getString("title"));
    
    
    
                    }
    
                    Log.i("YouJsonData:", jsonData);
    
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
    
    
                return null;
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }
    

    Maybe this can help you.

提交回复
热议问题