آموزش برنامه نویسی اندروید فصل سوم
در قسمت بیست و نهم آموزش اندروید اشیا چیننده که شامل TimePicker و DatePicker و شی بسیار کاربردی AutoCompeleteTextView را آموزش داده ایم.
ابزار نمایش AutoCompleteTextView یک ابزار شبیه EditText است(زیر مجموعه این ابزار است)تنها تفاوت آن لیستی از گزینه های حدس زده توسط اندروید میباشد که در هنگام تایپ کاربر برای راحتی کار کاربر نمایش داده میشود.تمرین زیر این مفهوم را قابل درک تر میکند.
پروژه جدیدی به نام View3Prj ایجاد کرده و در محیط activity_main.xml ابزار های TextView و AutoCompeleteTextView را مطابق عبارات زیر اضافه میکنیم
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | < TextView android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "Name of City" /> < AutoCompleteTextView android:id = "@+id/txtCity" android:layout_width = "fill_parent" android:layout_height = "wrap_content" /> |
سپس در فایل MainActivity.java نیز چنین کدنویسی میکنیم
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | package com.example.view3prj; import android.os.Bundle; import android.app.Activity; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; public class MainActivity extends Activity { String[] city ={ "Shiraz" , "Esfahan" , "Tehran" , "Yazd" , "Ahvaz" , "Mashhad" , "Mazandaran" , "Marvdasht" }; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>( this ,android.R.layout.simple_dropdown_item_1line, city); AutoCompleteTextView tv = (AutoCompleteTextView)findViewById(R.id.txtCity); tv.setThreshold( 3 ); tv.setAdapter(adapter); } } |
حال میتوان برنامه را اجرا کرده و نتیجه را مطابق شکل زیر ببینید
در کلاس برنامه ابتدا یک ارایه رشته ای که شامل نام های چندین شهر میباشد را به صورت زیر ایجاد میکنیم
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 | String[] city ={ "Shiraz" , "Esfahan" , "Tehran" , "Yazd" , "Ahvaz" , "Mashhad" , "Mazandaran" , "Marvdasht" }; |
شی ArrayAdapter آرایه ای را که باید در AutoCompeleteTextView نمایش داده شود را کنترل میکند در این مثال این ابزار طوری تنظیم شده که به صورت simple_dropdown_item_1line نمایش داده میشود
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, city);
متد ()setThreshold مشخص کننده حداقل کاراکتری است که کاربر باید بنویسید تا منو کلمات حدس زده توسط اندروید نمایش داده شود
1 | tv.setThreshold( 3 ); |
گزینه های این حدس از طریق شی ArrayAdapter دریافت میگردد
1 | tv.setAdapter(adapter); |
انتخاب تاریخ و زمان یکی از کارهای متدوال در گوشی های موبایل است.اندروید این کاررا به وسیله ابزارهای TimePicker و DatePicker که در ادامه با آنها آشنا خواهیم شد انجام میدهد.
این ابزار نمایش به کاربر این امکان را میدهد تا بتواند زمانی را براساس AM یا PM انتخاب کند. برای درک بیشتر به مثال زیر دقت فرمایید.
پروژه جدیدی به نام View4Prj ایجاد کرده که بسیار ساده و کارآمد میباشد و تنها مقادیر ساعت و دقیقه ای را که کاربر تنظیم کرده را توسط کلاس Toast نمایش میدهد پس در بخش xml آن ابزار های Button و TimePicker را مطابق زیر اضافه میکنیم
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | < TimePicker android:id = "@+id/timePicker" android:layout_width = "wrap_content" android:layout_height = "wrap_content" /> < Button android:id = "@+id/btnSet" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignLeft = "@+id/timePicker" android:layout_below = "@+id/timePicker" android:layout_marginTop = "22dp" android:onClick = "onClick" android:text = "I am all Set" /> |
حال میتوان برنامه را اجرا کرده و نتیجه را دید اما برای زیبایی کار و کارآمد بودن ما در فایل جاوا برنامه برای نمایش پیغام مناسب چنین کدنویسی میکنیم
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package com.example.view4prj; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.widget.Toast; import android.widget.TimePicker; public class MainActivity extends Activity { TimePicker tp; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); tp= (TimePicker)findViewById(R.id.timePicker); tp.setIs24HourView( true ); } public void onClick(View view) { Toast.makeText(getBaseContext(), "Time Selected: " + tp.getCurrentHour() + ":" + tp.getCurrentMinute(), Toast.LENGTH_SHORT).show(); } |
حال میتوان برنامه را اجرا کرده و نتیجه را مطابق شکل زیر مشاهده کنید
ابتدا با متد ()findViewById توسط مقدار Id تعیین شده برای ابزار TimePicker به آن اشاره میکنیم و از این به بعد هنگام استفاده از متغیر tp که ازنوع TimePicker تعریف شده درواقع داریم به ابزار TimePicker دسترسی پیدا میکنیم
tp= (TimePicker)findViewById(R.id.timePicker);
به صورت عادی این ابزار زمان را در قالب AM\Pm نمایش میدهد حال اگر مایلید زمان در قالب ۲۴ساعت درآید متد ()setIs24HourView را فراخوانی میکنیم .
برای اینکه در زمان اجرا زمان وارد شده توسط کاربر را دریافت کنیم از متدهای ()getCurrentHour و ()getCurrentMinute استفاده میکنیم
1 2 3 | Toast.makeText(getBaseContext(), "Time Selected: " + tp.getCurrentHour() + ":" + tp.getCurrentMinute(), Toast.LENGTH_SHORT).show(); |
متد ()getCurrentHour همیشه زمان را در قالب ۲۴ ساعت برمیگرداند.