CheckBox در اندروید

منتشرشده توسط حامد قنبری در تاریخ

 

در اندروید CheckBox از جمله ویوهایی است که بعنوان سوئیچ روشن / خاموش عمل می کند که ارزش مربوط به آن توسط کاربر تغییر می یابد. هنگامی که برنامه نویسان با دو نوع گزینه انتخابی که متقابلا منحصر به فرد  نبوده وقابل جمع نیز نیست روبرو می شود و لاجرم  کاربر می بایست که از بین گزینه های انتخابی فقط یک گزینه را انتخاب کند از چک باکس استفاده می کنند. برای  مثال وقتی که قرار است که کاربر انتخاب کند که در هنگام تماس صوتی ، مکالمه صوتی آن ضبط شود یا نشود از این ویو استفاده می شود. بنابراین چک باکس یا در حالت تیک دار قرار می گیرد و یا در حالت غیرتیک  در Android، ، بنابراین یا حالت True  را بر می گرداند و یا حالت False  را.

نحوه اضافه کردن CheckBox به پروژه:

بطور کلی دو روش کلی  برای ایجاد  CheckBox در برنامه اندروید وجود دارد. راه حل اول همانطور که در مباحث پیشین در موضوعات مرتبط با ویوها مطرح شد افزودن از طریق فایل XML  که به شکل زیر می باشد.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New CheckBox"
        android:id="@+id/checkbox" />

</LinearLayout>

در این روش در فایل XML  همانند فایل activity_main.xml و در  داخل لایوت های اصلی یا فرعی ،  تگ شروع شونده CheckBox>  را تایپ کرده و سپس سایر ویژگی های مربوط به آن مانند متن ویو ، رنگ متن ، حالت تیک تیک دار یا غیرتیک ،اندازه متن و … را به آن  اضافه می کنیم و سپس با تگ پایانی /> آن را می بندیم. به منظور درک بیشتر موضوع به کدهای زیر دقت کنید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    
 
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Record Call"
        android:id="@+id/checkbox"
        android:checked="true"
        android:textColor="@color/colorAccent"
        android:layout_gravity="center"
        android:textSize="20sp"/>

    

</LinearLayout>

 

همانطور که در کد هایXML فوق می بینید CheckBox در داخل لایوت اصلی ما یعنی  LinearLayout  قرار دارد  و دارای ویژگی های متعددی است که در برنامه به هنگام اجرای آن بر روی آن اعمال می شود. اما نکته اساسی در این کدها تعیین حالت پیشفرض CheckBox است که با استفاده از XMl  زیر تعیین می شود.

android:checked="true"

وقتی که ارزش مربوط به  checked در حالت true  قرار می گیرد چک باکس نمایش داده شده بصورت تیک دار نمایش داده خواهد و هنگامی که در حالت false  قرار می گیرد چک باکس نمایشی بصورت غیرتیک دار خواهد بود.

در گام نخست آنچه برای مهم و ضروری بنظر می رسد نحوه فراخوانی این عنصر ایجاد شده به منظور اعمال برخی عملیات ها در کلاس مرتبط با آن است. به همین منظور تمامی ویوهای موجود در فایل XML  را از طریق ایدی یا شناسه مرتبط با آن ویو در کلاس فراخوانی می کنیم. که در مثال ذکر شده ایدی CheckBox به شکل زیر تعریف شده است:

برای فراخوانی CheckBox و سایر ویوها برای منظور برنامه نویسی در کلاس از متد

findViewById(R.id.yourid)

استفاده می کنیم.

به همین منظور لازم است در کلاس ها  اولاً فایل XML مرتبط با کلاس مشخص شود. یعنی ما باید مشخص کنیم که قصد فراخوانی چه چیزی را از کدام فایل XMl  داریم که در کد زیر در دستور مشخص شده با رنگ قرمز مشخص شده است و سپس  آن ویو یا عنصر مورد نظر در فایل مربوطه را بر اساس شناسه آن فراخوانی می کنیم  و آن در متغیری از نوع خود ذخیره می کنیم.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         CheckBox checkBox = (EditText)findViewById(R.id.checkbox);
        



    }
}

 

تا اینجا ما توانستیم CheckBox مورد نظر خود را در فایل  Xml ایجاد کرده و آن را به کلاس موردنظر خودمان شناسایی کنیم. اکنون لازم است بفهیم که ارزش انتخابی مورد نظر کاربر  چه بوده است؟ بدین منظور لازم است که ابتدا متغیری  را به نوع Boolen  ایجاد کنیم و سپس با استفاده از متد()isChecked  ارزش مربوط به آن چک باکس را در متغیر مورد نظر ذخیره کنیم. سپس با استفاده از عبارات شرطی مقدار مورد نظر متغیر را رصد می کنیم و این چنین شرط  کنیم که اگر مقدار ذخیره شده در متغیر برابر با true  باشد پیام مورد ما حالت تیک دار بودن آن را نشان دهد و در غیر این صورت حالت غیرتیک بودن آن را.

به مثال زیر توجه کنید:

 CheckBox checkBox = (EditText)findViewById(R.id.checkbox);

Boolean value = checkBox.isChecked();
if(value == true){
    Toast.makeText(getApplication(), "value in ticked",Toast.LENGTH_LONG).show();
}else{
    Toast.makeText(getApplication(), "value in unticked",Toast.LENGTH_LONG).show();
}

به منظور درک بهتر توضیحات فوق نظر شما را به مثالی جلب می کنیم. در این مثال قرار است کاربر متن مورد نظر خود را در EditText تایپ کرده و با کلیک کردن بر روی Button   متن مورد نظر شما از EditText  گرفته و آن را TextView نمایش دهد.

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

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید.

در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


   
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Record Call"
        android:id="@+id/checkBox"
        android:checked="true"
        android:textColor="@color/colorAccent"
        android:layout_gravity="center"
        android:layout_marginTop="20sp"
        android:textSize="20sp"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Click Me"
        android:id="@+id/button1"
        android:textColor="@color/colorAccent"
        android:layout_marginTop="50sp"
        android:textSize="20sp"
        />

سپس کلاس MainActivity  را باز کرده و کدهای مندرج در زیر را در آن کلاس قرار می دهیم.

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         final CheckBox checkBox = (EditText)findViewById(R.id.checkbox);
        Button  btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              
                if(checkBox.isChecked()){
                    Toast.makeText(getApplication(), "value in ticked",Toast.LENGTH_LONG).show();
                }else{
                    Toast.makeText(getApplication(), "value in unticked",Toast.LENGTH_LONG).show();
                }
            }
        });






    }
}

حال می توانید پروژه خود را اجرا نموده و نتیجه کار خود را ببینید.


0 دیدگاه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *