درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من

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

0 نظرات
77 بازدیدها
با سلام به همه دوستان و همراهان 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;
با این کد هرگاه مقدار نام خالی باشد و بخواهیم عمل ذخیره سازی را انجام دهیم با پیام شکل زیر روبرو خواهیم شد و ادامه کد ذخیره اجرا نخواهد شد.
Image

در کل کد متد 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