درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    اطلاعات دوره آموزشی
    اطلاعات مطلب
      مدرس/نویسنده
      مهدی عادلی فر
      امتیاز: 242796
      رتبه:6
      111
      196
      285
      1456
      مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم. پروفایل کاربر

      نوشتن Save و Delete برای برنامه اندروید در Xamarin

      تاریخ 38 ماه قبل
      نظرات 0
      بازدیدها 753
      با سلام به همه دوستان و همراهان Itpro. در ادامه مطالب برنامه نویسی اندروید با استفاده از زبان C# و برنامه xamarin در خدمت شما هستیم. در ادامه مباحث به افزودن اکشن های save و delete به برنامه می پردازیم. که اکشن delete یک موجودیت رو از حافظه پاک می کند و اکشن Save یک موجودیت را در دستگاه ذخیره می نماید. حال ببینیم برای اضافه کردن این اکشن ها به برنامه باید چه کارهایی انجام دهیم. برای این کار ابتدا باید رابط کاربری آن را بسازیم. ما برای این که این اکشن ها را به برنامه اضافه کنیم از ActionBar استفاده می کنیم. برای این کار باید یک فایل منوی جدید به نام ITproDetailMenu می سازیم و کد زیر را در درون آن قرار می دهیم.
      <menu xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:id="@+id/actionSave"
      android:title="Save"
      android:showAsAction="ifRoom" />
      <item android:id="@+id/actionDelete"
      android:title="Delete"
      android:showAsAction="ifRoom" />
      </menu>
      
      این کد نام و تعداد منوها را تعریف می کند. همانطور که قبلا هم گفتیم برای این که بتوانیم با منو ها کار کنیم باید دستورات مربوط به منو ها را داخل متد های onCreateOptionMenu و onOptionsItemSelected بنویسیم. کد زیر این متدها را نشان می دهد.
      public override bool OnCreateOptionsMenu(IMenu menu)
      {
      MenuInflater.Inflate(Resource.Menu.ITproDetailMenu, menu);
      return base.OnCreateOptionsMenu(menu);
      }
      public override bool OnOptionsItemSelected (IMenuItem item)
      {
      switch (item.ItemId)
      {
      case Resource.Id.actionSave:
      SaveItpro ();
      return true;
      case Resource.Id.actionDelete:
      DeleteItpro ();
      return true;
      default :
      return base.OnOptionsItemSelected(item);
      }
      }
      
      ما برای این که کد متد onOptionsItemSelected را تمیز نگه داشته باشیم دو تابع SaveItpro و DeleteItpro استفاده کرده ایم که بعدا کد داخل این توابع را بیان خواهیم کرد.

      غیرفعال کردن اکشن Delete


      در برخی مواقع اتفاق می افتد که ما می خواهیم برخی از کاربردها و اکشن های برنامه غیرفعال باشند. مثلا ما می خواهیم که کاربرنتواند برخی آیتم ها را حذف کند. برای این کار ما باید این عمل غیر فعال کردن را در داخل متد onPrepareOptionMenu که در داخل کلاس activity است پیاده سازی کنیم. اگر ما کد زیر را برای متد گفته شده بنویسیم اکشن Delete غیر فعال خواهد شد.
      public override bool OnPrepareOptionsMenu (IMenu menu)
      {
      base.OnPrepareOptionsMenu (menu);
      
      if (!_entity.Id.HasValue) {
      IMenuItem item =
      menu.FindItem (Resource.Id.actionDelete);
      item.SetEnabled (false);
      }
      return true;
      }
      
      به این نکته دقت داشته باشید که اینترفیس IMenu یک متد با نام FindItem دارد که می تواند به ارجاعات به آیتم های هر منو را در خود نگهداری کند.و به آنها دسترسی داشته باشد و همچنین می توان با استفاده از تابع SetEnabled یک آیتم را فعال یا غیرفعال نمود.

      نوشتن تابع SaveItpro()


      ما برای این که کد زیاد در داخل متد onOptionItemSelected قرار ندهیم و کل منطق ذخیره را در داخل آن ننویسیم یک تابع جدید به نامه SaveItpro() ساختیم که این تابع باید کارهای زیر را انجام دهد.
      1. ورودی کاربر را اعتبارسنجی نماید.
      2. مقادیر وارد شده را از ویجت های کاربر بگیرد و در داخل Entity ذخیره کند.
      3. متد SaveEntity را از ItporJsonService فرخوانی نماید.
      4. اکتیویتی ItporDetailActivity را ببندد.
      اعتبارسنجی ورودی به این معنی است که آیا کاربر داده درست وارد کرده است یا خیر که اگر ورودی درست وارد نکرده بود باید به کاربر خطا داد و تا آن را درست نماید. برای مثال در این برنامه فیلد نام نباید خالی باشد برای این کار باید فیلد نام را اعتبارسنجی نماییم. برای اعتبارسنجی یک فیلد از فیلدError مربوط به editText استفاده می کنیم. در کد زیر یک گفته ایم که اگر مقدار nameEditText خالی باشد باید خطا نمایش داده شود.
      var error=false;
      if (String.IsNullOrEmpty (_nameEditText.Text)) {
      nameEditText.Error = "مقدار نام نباید خالی باشد";
      error=true;
      }
      else{
      nameEditText.Error = null;
      error=false;}
      if(error)return;
      
      با این کد هرگاه مقدار نام خالی باشد و بخواهیم عمل ذخیره سازی را انجام دهیم با پیام شکل زیر روبرو خواهیم شد و ادامه کد ذخیره اجرا نخواهد شد.
      نوشتن Save و Delete برای برنامه اندروید در Xamarin

      در کل کد متد SaveItpro() به شکل زیر است:
       public void SaveItpro()
              {
                        var error = false;
                  if (String.IsNullOrEmpty(nameEditText.Text))
                  {
                      nameEditText.Error = "مقدار نام نباید خالی باشد";
                      error = true;
                  }
                  else
                  {
                      nameEditText.Error = null;
                      error = false;
                  }
      
                  if (error) return;
                  entity.Name = nameEditText.Text;
                  entity.Description = descrEditText.Text;
                  entity.Address = addrEditText.Text;
                  ItproData.Service.SavePOI(entity);
                  Finish();
              }
      
      دقت داشته باشید که تابع Finish() باعث بسته شدن activity جاری می شود.

      نوشتن تابع DeleteItpro()


      در داخل این تابع باید دو عمل انجام شود. 1.رکورد موجود حذف شود. 2.activity بسته شود.
       protected void DeleteItpro()
              {
                  ItproData.Service.DeleteEntity(entity);
                  Finish();
              }
      
      در انجام بعضی از دستورات کاربر باید مطمئن شویم که کاربر سهوا این کار را انجام نداده و از انجام آن مطمئن است. یکی از این کارها حذف داده ها می باشد. عموما برای این کار بعد از این که کاربر دستور حذف داده ها را می دهد یک سوال از او پرسیده می شود و در صورت تایید کاربر داده حذف می شود. حال ما می خواهیم بدانیم این سوال را در اندروید چگونه باید از کاربر بپرسیم. برای این کار از کلاس های AlertDialog و AlertDialog.Builder در اندروید استفاده می کنیم. این کلاس ها به شما اجازه می دهند که یک کادر سوال بسازید که گزینه های مختلفی برای انتخاب دارند و با انتخاب هر کدام از گزینه ها کار بخصوصی انجام خواهد شد. برای ساخت این کادر سوال باید مراحل زیر را انجام دهیم.
      1. یک نمونه از کلاس AlertDialog.Builder بسازیم.
      2. ویژگی های مختلف کادر باز شده از جمله پیامی که قرار است نشان داده شود و نوشته ی مربوط به هر دکمه و عملی که با کلیک بر روی هر دکمه قرار است انجام شود و ...
      3. فراخوانی متد Show() از شی کلاس Builder تا پیام را نمایش دهد. در برنامه ما یک کادر سوال با گزینه های تایید و لغو وجود دارد که اگر کاربر تایید کرد داده مورد نظر حذف شود.
      4. ساخت یک event handler که بعد از تایید کاربر حذف داده و بسته شدن اکتیویتی که در داخل اکشن Delete نوشته بودیم را به آنجا انتقال دهیم.
      5. افزودن منطق ساخت کادر تایید به متد DeleteItpro() که کد زیر را داخل این متد می نویسیم.
      6. protected void DeleteItpro()
                {
                    AlertDialog.Builder alertConfirm =
        			new AlertDialog.Builder(this);
        			alertConfirm.SetCancelable(false);
        			alertConfirm.SetPositiveButton("OK", ConfirmDelete);
        			alertConfirm.SetNegativeButton("Cancel", delegate {});
        			alertConfirm.SetMessage(String.Format("Are you sure you
        			want to delete {0}?", entity.Name));
        			alertConfirm.Show();
        
                }
        
        

        نشان دادن پیام موفقیت


      ما می خواهیم بعد از این که داده حذف شد خبر موفقیت آمیز بودن پیام به کاربر نمایش داده شود. در اندروید این گونه پیام ها را که فقط حالت خبری دارند و می خواهند کاربر از چیزی اطلاع یابد را با کلاس Toast نشان می دهند. این کلاس یک پیام در پایین صفحه به مدت چند ثانیه نشان می دهد. برای نمایش این پیام به این شکل عمل می کنیم:
      Toast.MakeText(this,"Data deleted",ToastLength.Short).Show();
      
      این خط کد را در قبل از خط Finish() قرار می دهیم.

      بازسازی ItproListActivity

      اگر ما عمل Save و یا Delete را در برنامه انجام دهیم تعداد داده های موجود کم یا زیاد خواهد شد. برای همین باید لیستی که داده ها را نمایش می دهد را بازسازی کنیم که اگر داده ای حذف شده باشد آن را حذف کند و اگر داده جدیدی ساخته شده است آن را به لیست اضافه کند. برای این کار باید به adapter بگوییم که داده ها تغییر کرده اند و خود را بروز کند برای این کار در متد OnResume مربوط به Activity باید کد زیر را بنویسیم.
      protected override void OnResume (){
      base.OnResume ();
      _adapter.NotifyDataSetChanged ();
      }
      
      تا این قسمت از مطالب نحوه ذخیره سازی و خواندن اطلاعات و نمایش آن با استفاده از ویجت های اندروید در Xamarin آموزش داده شد. امیدوارم توانسته باشم کاری کنم که کاربران با مقدمات برنامه نویسی اندروید آشنا شوند. پس از این قسمت تکنیک هایی را به زبان جاوا در باره ی برنامه نویسی اندروید خواهیم گفت که با توجه به این نکته که در اندروید تفاوت زیادی نیست می توانید با کمی بررسی آن ها را در زبان C# و Xamarin هم پیاده بکنید. Itpro باشید


      نویسنده: مهدی عادلی فر 
      منبع: انجمن تخصصی فناوری اطلاعات ایران 
      هر گونه نشر و کپی برداری بدون ذکر نام منبع و نویسنده دارای اشکال است. 

      برچسب ها
      ردیفعنوان
      1معرفی سیستم عامل اندروید
      2معرفی سیستم عامل اندروید (بخش دوم)
      3معرفی سیستم عامل اندروید (بخش سوم)
      4معرفی Xamarin.Android برای نوشتن برنامه های اندروید به زبان #C
      5شروع کار برنامه نویسی اندروید با استفاده از Xamarin
      6ساخت مکانیزم ذخیره سازی اطلاعات در اندروید به زبان #C
      7طراحی رابط کاربری اندروید با استفاده از Xamarin
      8ساخت منو صفحه اصلی در اندروید
      9نمایش اطلاعات یک Entity در برنامه اندروید(Xamarin)
      10نوشتن Save و Delete برای برنامه اندروید در Xamarin
      دورهمجموعه کل دوره
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      هیچ نظری ارسال نشده است

        برای ارسال نظر ابتدا به سایت وارد شوید

        arrow
        دوره های وب سایت توسینسو

        با دوره های وب سایت توسینسو به همراه برترین اساتید ایران دانش خود را به روز کنید و در کنار آموزش آنلاین پشتیبانی اساتید را هم داشته باشید

        شبکه و زیر ساخت، مجازی سازی، امنیت اطلاعات، برنامه نویسی، گرافیک، اینترنت اشیاء، طراحی وب و صدا ها دوره آموزشی دیگر

        تا 150،000 تومان شارژ هدیه

        همین امروز شروع کنید