مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

sia916

عضویت از 1392/11/13

نمایش لودینگ دیتا هنگام واکشی اطلاعات

  • دوشنبه 7 اسفند 1396
  • 15:37
تشکر میکنم

فرض کنیم در یک Activity میخواهیم یک لیست ویو را با داده از راه دور پر کنیم . میخواهیم در هنگام واکشی اطلاعات پروگرس دیالوگ را نشان دهیم . چطور میتوانیم؟

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 7 اسفند 1396
  • 16:05
باید متد سرویس را به صورت Async فراخوانی کنید و سپس در لحظه لود از یک ProgressDialog استفاده کنید و بعد از اتمام کار Progress را Cancel کنید
کاربر سایت

sia916

عضویت از 1392/11/13

  • دوشنبه 7 اسفند 1396
  • 16:46

از متد زیر در onCreate یک Activity استفاده کرده ام ولی باز هم کار نمیکند اشکال در کجاست؟

private async void BindListView()
        {
            using (ProgressDialog progress = new ProgressDialog(this))
            {
                progress.SetMessage("");
                progress.SetTitle("");
                progress.Show();

               
                    var ti = new TokenInfo
                    {
                        token = TokenValue.TokenFromDevice
                    };
                    _foodCategory = _foodRepo.GetAllFoodCategory(ti).Result;
                    _lstFoodCategory.Adapter = new FoodCategoryAdapter(this, _foodCategory);
               

                   progress.Dismiss();

            }
            
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 7 اسفند 1396
  • 16:52

از طریق کلید کد در ادیتور کدهاتون رو قرار بدید

کاربر سایت

sia916

عضویت از 1392/11/13

  • دوشنبه 7 اسفند 1396
  • 17:04
public async Task<List<FoodCategoryInfo>> GetAllFoodCategory(TokenInfo info)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    var uri = new Uri(baseUri + "Food_Category/PostFoodCategoriesByToken");
                    var json = JsonConvert.SerializeObject(info);
                    var content = new StringContent(json, Encoding.UTF8, "application/json");

                    var response = await client.PostAsync(uri, content).ConfigureAwait(false);
                    if (response.IsSuccessStatusCode)
                    {
                        var responseContent = await response.Content.ReadAsStringAsync();
                        var authData = JsonConvert.DeserializeObject<List<FoodCategoryInfo>>(responseContent);

                        return authData;
                    }
                }
            }
            catch (TimeoutException)
            {
                
            }
            return null;
        }

private async void BindListView()
        {
            using (ProgressDialog progress = new ProgressDialog(this))
            {
                progress.SetMessage("");
                progress.SetTitle("");
                progress.Show();

                await Task.Run(() =>
                {
                    var ti = new TokenInfo
                    {
                        token = TokenValue.TokenFromDevice
                    };
                    _foodCategory = _foodRepo.GetAllFoodCategory(ti).Result;
                    _lstFoodCategory.Adapter = new FoodCategoryAdapter(this, _foodCategory);
                });

                progress.Dismiss();
            }
            
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 7 اسفند 1396
  • 18:41

شما باید سرویس رو به صورت async فراخوانی کنید

الان متد های خودتون رو async کردید

در سایت زامارین نمونه هست یه نگاه بندازید

کاربر سایت

sia916

عضویت از 1392/11/13

  • دوشنبه 7 اسفند 1396
  • 19:20

متد اول متد خواندن از سرویس webapi است که بصورت sync در repository تعریف شده است

متد دوم متدی است که در activity تعریف شده و در oncreate جایگذاری شده است ولی متاسفانه کار نمیکند

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 8 اسفند 1396
  • 09:08

progress را بیرون متد show کنید  و بعد متد را فراخوانی کنید

در خود oncreate

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)