نمایش progress dialog در حین گرفتن دیتا از سرور
با سلام
من می خوام تو پروژه ساخت مارکت با بانک آنلاین هنگامی که اطلاعات جیسون شده داره از سرور گرفته میشه تا توی لیست ویو نشون داده بشه یه پروگرس دیالوگ رو نشون بدم
یعنی تا وقتی اطلاعات نیومده به جای اینکه صفحم سیاه شه پروگرس دیالوگ نمایش داده شه
به چه طریقی هست؟



ببینید ، وقتی خروجی از سرور میاد مثلا تو متغییر به اسم result ذخیره میشه ، شما کناراین متغییر یکی دیگه به اسم iscomplete تغریف کن ، هر وقت کاره استریمینگ تموم شد ، این متغییر true بشه
از اون طرف تا وقتی false هست Dialog نشون بدید :) ، چون سورس نبود همین جوری گفتم دیگه ! ، ییهو !

شما اول از همه یک صفحه Loading نشون بده و بعدش وب سرویس رو برای درخواست اطلاعات از سرور صدا بزن. بعد از دریافت اطلاعات ( که توسط Listener ) اطلاع داده میشه ، در متد Listener دیالوگ Loading رو dismiss کنید. اگر واضح نبود اطلاع بدید.

سلام با این سورس توانستم به جواب برسم
private class LongOperation_img_update_images extends AsyncTask<String, Void, Void> {
private ProgressDialog Dialog = new ProgressDialog(Activity_Menu.this);
@Override
protected void onPreExecute() {
// NOTE: You can call UI Element here.
//UI Element
Dialog.setMessage(G.getResource.getString(R.string.Updating));
Dialog.show();
}
// Call after onPreExecute method
@Override
protected Void doInBackground(String... urls) {
Main_Food_DB.download_image_main_food();
Drink_DB.download_image_drinks();
return null;
}
@Override
protected void onPostExecute(Void unused) {
// NOTE: You can call UI Element here.
// Close progress dialog
Dialog.dismiss();
}
} // END Class with extends AsyncTask class*** LongOperation_img_update_images
این هم قسمت فراخوانی دستورات بالا
newLongOperation_img_update_images().execute();

این کدی هست که نوشتم ولی کار نمیکنه. همون پروژه Notes هستش ولی یکم دستکاریش کردم. میشه استد راهنمایی کنن.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ListView lstContent = (ListView) findViewById(R.id.lstContent); adapter = new AdapterNote(G.list); lstContent.setAdapter(adapter); // if ("1".equals("db_select")) { // Commands.article(); // } private class get_data_server extends AsyncTask<String, Void, Void> { private ProgressDialog Dialog = new ProgressDialog(ActivityMain.this); @Override protected void onPreExecute() { // NOTE: You can call UI Element here. //UI Element Dialog.setMessage("Please Wait..."); Dialog.show(); } // Call after onPreExecute method @Override protected Void doInBackground(String... urls) { String db_select = ""; TextView txtCatName = (TextView) findViewById(R.id.txtCatName); Bundle extras = getIntent().getExtras(); if (extras != null) { db_select = extras.getString("db_select"); //Toast.makeText(G.context, "variable sent : " + db_select, Toast.LENGTH_SHORT).show(); if ("2".equals(db_select)) { Commands.article(); txtCatName.setText("مقالات حفاری"); } else if ("0".equals(db_select)) { Commands.film(); txtCatName.setText("فیلم و انیمیشن"); } else if ("1".equals(db_select)) { Commands.ebook(); txtCatName.setText("کتب الکترونیک"); } else if ("5".equals(db_select)) { Commands.program(); txtCatName.setText("برنامه و نرم افزار"); } } adapter.notifyDataSetChanged(); return null; } @Override protected void onPostExecute(Void unused) { // NOTE: You can call UI Element here. // Close progress dialog Dialog.dismiss(); } } new get_data_server().execute(); }
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .