آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

نمایش progress dialog در حین گرفتن دیتا از سرور

Tahi  11 سال پیش  10 سال پیش
+1 0

با سلام

من  می خوام تو پروژه ساخت مارکت با بانک آنلاین هنگامی که اطلاعات جیسون شده داره از سرور گرفته میشه تا توی لیست ویو نشون داده بشه یه پروگرس دیالوگ رو نشون بدم 

یعنی تا وقتی اطلاعات نیومده به جای اینکه صفحم سیاه شه پروگرس دیالوگ نمایش داده شه

به چه طریقی هست؟

0 0
بايد از thread ها استفاده كنيد (11 سال پیش)
0 0
خوب میدونم ولی چه جوری؟ (11 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
+1 0

ببینید ، وقتی خروجی از سرور میاد مثلا تو متغییر به اسم result ذخیره میشه ، شما کناراین متغییر یکی دیگه به اسم iscomplete تغریف کن ، هر وقت کاره استریمینگ تموم شد ، این متغییر true بشه

از اون طرف تا وقتی false هست Dialog نشون بدید :) ، چون سورس نبود همین جوری گفتم دیگه ! ، ییهو !

0 0
نیازی به متغیر دیگری نیست. (11 سال پیش)
پاسخ به سوال 
uncocoder  11 سال پیش
+3 0

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

0 0
ممنون ، واضح بود (11 سال پیش)
0 0
نه استاد واضح نبود بیشتر توضیح دهید (10 سال پیش)
0 0
یعنی از همون اول دیالوگ رو نشون بدیم ، وقتی کار Thread تموم شد فقط باید Dismiss بشه :) (10 سال پیش)
0 0
استاد واضح نبود. من از همون پروژه Notes شما استفاده میکنم و یکسری اطلاعات رو از بانک میخونم و توی یک ListView نمایش میدم. اگر بخوام کلاس هایی که در Command هستند رو صدا بزنم ولی با نمایش یک Loading باید چکار کنم. ممنون میشم راهنمایی کنید. (10 سال پیش)
پاسخ به سوال 
javac  11 سال پیش
0 0

چه طوری توسط Listenre اطلاع داده میشه؟

پاسخ به سوال 
Borhani  10 سال پیش
0 0

سلام با این سورس توانستم به جواب برسم

  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();
0 0
من همین رو میزنم ولی بهم ارور میده. میگه که Private رو باید از اول کلاس برداری. و وقتی هم بر میدارم باید پس از پایان کلاس اونو فراخوانی کنم. تا بهم ارور نده. وقتی هم اجرا میکنم دیالوگ همینطوری کار میکنه تا کرش میشه. (10 سال پیش)
پاسخ به سوال 
mak332  10 سال پیش
0 0

این کدی هست که نوشتم ولی کار نمیکنه. همون پروژه 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();
    }



0 0
کلاس get_data_server مستقل هست، اون رو جداگانه بسازید و خارج از OnCreate قرار بدین (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .