در قسمت بیست و نهم آموزش اندروید اشیا چیننده که شامل TimePicker و DatePicker و شی بسیار کاربردی AutoCompeleteTextView را آموزش داده ایم.
ابزار نمایش AutoCompleteTextView یک ابزار شبیه EditText است(زیر مجموعه این ابزار است)تنها تفاوت آن لیستی از گزینه های حدس زده توسط اندروید میباشد که در هنگام تایپ کاربر برای راحتی کار کاربر نمایش داده میشود.تمرین زیر این مفهوم را قابل درک تر میکند.
پروژه جدیدی به نام View3Prj ایجاد کرده و در محیط activity_main.xml ابزار های TextView و AutoCompeleteTextView را مطابق عبارات زیر اضافه میکنیم
<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 نیز چنین کدنویسی میکنیم
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); } }
حال میتوان برنامه را اجرا کرده و نتیجه را مطابق شکل زیر ببینید
در کلاس برنامه ابتدا یک ارایه رشته ای که شامل نام های چندین شهر میباشد را به صورت زیر ایجاد میکنیم
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 مشخص کننده حداقل کاراکتری است که کاربر باید بنویسید تا منو کلمات حدس زده توسط اندروید نمایش داده شود
tv.setThreshold(3);
گزینه های این حدس از طریق شی ArrayAdapter دریافت میگردد
tv.setAdapter(adapter);
انتخاب تاریخ و زمان یکی از کارهای متدوال در گوشی های موبایل است.اندروید این کاررا به وسیله ابزارهای TimePicker و DatePicker که در ادامه با آنها آشنا خواهیم شد انجام میدهد.
این ابزار نمایش به کاربر این امکان را میدهد تا بتواند زمانی را براساس AM یا PM انتخاب کند. برای درک بیشتر به مثال زیر دقت فرمایید.
پروژه جدیدی به نام View4Prj ایجاد کرده که بسیار ساده و کارآمد میباشد و تنها مقادیر ساعت و دقیقه ای را که کاربر تنظیم کرده را توسط کلاس Toast نمایش میدهد پس در بخش xml آن ابزار های Button و TimePicker را مطابق زیر اضافه میکنیم
<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" />
حال میتوان برنامه را اجرا کرده و نتیجه را دید اما برای زیبایی کار و کارآمد بودن ما در فایل جاوا برنامه برای نمایش پیغام مناسب چنین کدنویسی میکنیم
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 استفاده میکنیم
Toast.makeText(getBaseContext(), "Time Selected: " + tp.getCurrentHour() + ":" + tp.getCurrentMinute(), Toast.LENGTH_SHORT).show();
متد ()getCurrentHour همیشه زمان را در قالب ۲۴ ساعت برمیگرداند.