آموزش برنامه نویسی اندروید قسمت نوزدهم

سلام خدمت همه دوستان عزیز. جلسه 19 آموزش اندروید رو شروع میکنیم.

در جلسات قبل به مباحث تردینگ پرداختیم، با آسینک تسک هم آشنا شدیم. در آینده در مثالهای بیشتر با اینها بیشتر هم کار خواهیم کرد. در این جلسه میخوام نحوه کار با لیست ویوها و نیز اسپینر رو یاد بدم. لیستها که خیلی در اندروید کاربرد دارن. از جمله لیست مخاطبها، تلگرام، یا هر لیستی که تقریبا در 90 درصد برنامه­های اندرویدی مشاهده میکنید. اسپینرها هم برای انتخاب یک آیتم از یک منوی کشویی هست. در جلوتر متوجه میشید.

  1. اسپینرها در اندروید:

فرض کنید میخواهیم چنین چیزی داشته باشیم:

اسپینرها در اندروید عکس 1

اسپینرها برای اینکه مقدار داده های نمایشی خودشون رو داشته باشند از آرایه ها استفاده میکنند. یعنی شما ابتدا یک آرایه ایجاد میکنید و بعد آن را به spinner وصل میکنید. و برای این اتصال از آداپترها استفاده میکنیم. قبلا موقعی که میخواستیم از autocomplete textview استفاده کنیم با آداپترها آشنا شدید. آداپترها برای اتصال یک داده به view ها (ابزارها) در برنامه شما هستند. خب پس شروع کنیم.

ابتدا در تگ xml لیوت خود یک اسپینر قرار میدهیم.

 <Spinner android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:id="@+id/spinner"
></Spinner>

 و حالا به اکتیویتی خود میریم.

          من یک آرایه درست کردم. بصورت زیر:

 String[] spinner_array = new String[]{"java", "js" , "android" , "sql"};

          و بعد هم اسپینر خودم رو فراخوانی کردم:

 final Spinner spinner = (Spinner) findViewById(R.id.spinner);
   

حالا باید آداپتر خود را بسازیم. خیلی ساده است. ArrayAdapter یک کلاس هست. کافی هست ازش یک نمونه بسازیم. این کلای 3 ورودی دارد (یعین کانستراکتور کلاس سه ورودی میگیرد.) ورودی اول از جنس Context هست. پس از this استفاده میکنیم. ورودی بعدی یک تم برای اسپینر هست که میتوانیم از لیوت های پیشفرض خود اندروید استفاده کنیم. برای این کار عبارت android.R.layout را مینویسیم و بطور مثال برای اسپینر از لیوت زیر استفاده میکنیم:

 android.R.layout.simple_spinner_item

و ورودی آخر نیز نام آرایه ای هست که از آن برای اسپینر استفاده میکنیم. پس کد من هست:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>

        (getApplicationContext(),android.R.layout.simple_spinner_item,spinner_array);

و در نهایت باید این آداپتر را به اسپینر خود وصل کنم. پس یک نگاه کلی به کد بندازیم:

اسپینرها در اندروید عکس 2

خیلی هم خوب

حالا برنامه رو تست میکنیم. و همان چیزی شده که اول کار نشان دادم.

خب مسلما یکی از کارهایی که مورد استفاده هست گرفتن مقداری هست که کاربر از اسپینر انتخاب کرده. با یک متد به نام getSelectedItem . خب بیاید یک دکمه بذاریم که وقتی کاربر آن را زد مقداری که انتخاب کرده رو بصورت Toast نشان بده. من یک دکمه به اسم showSelected روی لیوت قرار دادم. کد زیر رو کافی هست بزنیم:

اسپینرها در اندروید عکس 2

متد String.valueOf چکار میکنه؟ اول اینکه متد getSelectedItem یک object برمیگرونه. پس برای نمایش اون بعنوان یک استرینگ باید به استرینگ تبدیل شود. خب متد valueOf که در کلاس String هست یک آبجکت بعنوان ورودی میگیرد و آن را به استرینگ تبدیل میکند.

تست:

اسپینرها در اندروید عکس 4

و حالا یک متد کاربردی در اسپینرها. شاید بخواهیم بلافاصله که کاربر یک آیتم را انتخاب کرد آن را داشته باشیم. مثلا در یک تکست ویو نمایش دهیم یا.....

برای اینکار از متد زیر استفاده میکنیم:

 setOnItemSelectedListener

برای اینکه کدمان پیچیده نشود کار قبلی رو اینبار داخل این listener انجام میدیم:

اسپینرها در اندروید عکس 5

میتونید تست کنید

داخل متد onItemSelected کار مورد نظر خودم رو نوشتم. متد دوم هم که مشخص هست از نامش. فقط یک نکته بگم. ورودی سوم این متد یعنی i پوزیشن آیتم انتخابی شمارو برمیگردونه. مثلا اگر کد زیر رو بزنید:

 @Override

public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

    Toast.makeText(getApplicationContext(),String.valueOf(i),Toast.LENGTH_SHORT).show();

}

موقع انتخاب آیتم سوم یعنی android دارم: (اندیس ها از 0 شروع میشود)

اسپینرها در اندروید عکس 6

  1. لیست ویوها

خب ابتدا باید تگ آن را ایجاد کنیم. مثلا:

اسپینرها در اندروید عکس 7

کدش دقیقا مثل چیزی هست که کار کردیم! تنها باید یک layout مناسب برای آن انتخاب کنیم. مثلا:

اسپینرها در اندروید عکس 8

و اما کد زیر رو ببینید:

اسپینرها در اندروید عکس 9

متد اول هنگام کلیک کردن روی یک آیتم هست. و برای گرفتم آن آیتم از ورودی i از متد استفاده کردم. مثل اسپینر این ورودی شماره آیتم انتخاب شده را نشان میدهد. پس با متد getItemAtPosition و دادن مقدار i تونستم این مقدار را بگیرم.

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

اسپینرها در اندروید عکس 10

خب ادامه بحث لیست ویوها برای جلسه آینده. خسته نباشید

برای درج نظر و یا طرح سوالات خود لطفا در سایت ثبت نام کنید و یا وارد سایت شوید

نظرات کاربران

برای این مطلب تاکنون نظری ارسال نشده است. شما اولین نفر باشید