繁体   English   中英

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

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

我正在开发一个Android应用程序,其中要显示进度对话框,直到完成gridview的加载。 但是我的问题是进度对话框旋转了一段时间。 然后它停止旋转。

这是我的代码。

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);
    }

}

请给我建议,如何使进度对话框旋转直到gridview加载。

将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