简体   繁体   English

进度对话框应该旋转直到完成gridview的加载

[英]Progress Dialog should spin till loading of gridview completed

I am working on one android app in which i want to display progress Dialog till loading of gridview completed. 我正在开发一个Android应用程序,其中要显示进度对话框,直到完成gridview的加载。 But my problem is progress dialog is spin for some intial time. 但是我的问题是进度对话框旋转了一段时间。 Then it stops spinning. 然后它停止旋转。

Here is my code. 这是我的代码。

public class allsites extends Activity {

    private final String url_select = "http://api.stackexchange.com/2.1/sites?filter=!RGB_Y51.*-(YX";
    private GridView gview;
    private ListViewCustomAdapter adapter;
    private ArrayList<Object> itemList = new ArrayList<Object>();
    private ItemBean bean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.allsites);
        //GridView gridview = (GridView) findViewById(R.id.gvAllSites);
        gview = (GridView) findViewById(R.id.gvallsites);
        new task().execute();


    }

    private class task extends AsyncTask<Void, Void, GZIPInputStream> {

        private ProgressDialog progress;


        @Override
        protected void onPreExecute() {

            progress = ProgressDialog.show(allsites.this, "Loading", "Please Wait...");
        }

        @Override
        protected GZIPInputStream doInBackground(Void... params) {

            ServerData httpclient = new ServerData();
            GZIPInputStream zis = httpclient.GetServerData(url_select);
            return zis;
        }

        @Override
        protected void onPostExecute(GZIPInputStream zis) {


            ParseJSON(zis);

            if(progress!=null && progress.isShowing()==true)
                progress.dismiss();



        }
    }

    private void ParseJSON(GZIPInputStream zis)
    {
        Gson gson = new Gson();

        Reader reader = new InputStreamReader(zis);

        Sites response = gson.fromJson(reader, Sites.class);

        List<Items> items = response.getItems();

        for (Items site : items) {
            //Toast.makeText(allsites.this, site.getApi_site_parameter().toString(), Toast.LENGTH_SHORT).show();
             AddObjectToList(site.getIcon_url(),site.getName());
        }

        adapter = new ListViewCustomAdapter(this, itemList);
        gview.setAdapter(adapter);
    }

    public void AddObjectToList(String imageURL, String title)
    {
        bean = new ItemBean();

        try {
            Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageURL).getContent());
            bean.setImage(bitmap);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        bean.setTitle(title);
        itemList.add(bean);
    }

}

Please give me suggestion how i can make progress dialog spinning till gridview get loaded. 请给我建议,如何使进度对话框旋转直到gridview加载。

move ParseJSON function to doInBackground event 将ParseJSON函数移至doInBackground事件

    @Override
    protected Boolean doInBackground(Void... params) {

        ServerData httpclient = new ServerData();
        GZIPInputStream zis = httpclient.GetServerData(url_select);

        ParseJSON(zis);
        return true;
    }

    @Override
    protected void onPostExecute(Boolean zis) {

            progress.dismiss();
    }

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

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