توی این آموزش میخوایم یه دکمه ساده توی برنامه مون بذاریم ، که وقتی کاربر روش تاچ کرد ، یه Dialog واسش باز بشه و یه سری آیتم و گزینه واسش نمایش داده بشه که کاربر هم میتونه همش رو انتخاب کنه ، هم چندتاشو ، و هم هیچکدوم رو ! و وقتی اوکی کرد نام اون گزینه ها توی همون صفحه اصلی نمایش داده بشه . این کار واسه مواردی مثل انتخاب شهرها ، انتخاب غذاهای مورد علاقه ها ، انتخاب دروس و مواردی مثل این کاربر داره .
با لایوت کاری نداریم و فقط توش یه Button میذاریم و یه TextView
توی اکتیویتی اصلی ، موارد و آیتم ها رو به این شکل اضافه میکنیم ( توی این آموزش از تیم های فوتبال استفاده میکنیم که تیم محبوب و مورد علاقه خودم ، یعنی چــلــــــســی ، اولین گزینه هست 🙂 ) :
1 2 3 4 5 |
CharSequence[] items = {"چلسی", "منچستر یونایتد", "آرسنال", "منچستر سیتی", "لیورپول", "تاتنهام"}; |
و میتونیم انتخاب کنیم که وقتی گزینه ها بالا میان ، کدومشون انتخاب شده باشه ، یا انتخاب نشده باشه ، از true و false استفاده میکنیم ، که اینجا شش مورد داریم و هر شش تاش رو روی false میذاریم
1 2 3 4 5 |
boolean[] selectedItems = {false, false, false, false, false, false}; |
میگیم وقتی کاربر روی دکمه کلیک کرد ، با استفاده از alertDialogBuilder بیا و گزینه ها رو نشون بده ، گزینه تایید رو هم نشون بده ، بگو وقتی تایید شد ، پنجره دایالوگ بسته بشه ، و میتونیم این امکان رو هم به کاربر بدیم که اگه روی یه فضای بیرونی دایالوگ کلیک کرد ، اون دایالوگ بسته بشه . با این کدها :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this); alertDialogBuilder.setCancelable(true); alertDialogBuilder.setTitle("باشگاه مورد علاقه خود را انتخاب کنید"); alertDialogBuilder.setMultiChoiceItems(items, selectedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i, boolean b) { // set the selected items to true or false selectedItems[i] = b; } }); alertDialogBuilder.setPositiveButton("تایید", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // show selected items textView.setText(itemsToString()); dialogInterface.dismiss(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.setCanceledOnTouchOutside(true); alertDialog.show(); } }); } |
و کل کدهای کلاس اکتیویتی :
1 2 3 4 5 6 7 8 9 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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
package ir.androidlife.multiplecheckboxdialog; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { Button button; TextView textView; // all items CharSequence[] items = {"چلسی", "منچستر یونایتد", "آرسنال", "منچستر سیتی", "لیورپول", "تاتنهام"}; // if items are selected boolean[] selectedItems = {false, false, false, false, false, false}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = findViewById(R.id.button); textView = findViewById(R.id.textView); // show selected items textView.setText(itemsToString()); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this); alertDialogBuilder.setCancelable(true); alertDialogBuilder.setTitle("باشگاه مورد علاقه خود را انتخاب کنید"); alertDialogBuilder.setMultiChoiceItems(items, selectedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i, boolean b) { // set the selected items to true or false selectedItems[i] = b; } }); alertDialogBuilder.setPositiveButton("تایید", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // show selected items textView.setText(itemsToString()); dialogInterface.dismiss(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.setCanceledOnTouchOutside(true); alertDialog.show(); } }); } // Get all items and show them if they are selected private String itemsToString() { String text = ""; for (int i = 0; i < selectedItems.length; i++) { // check if item is selected and show it if it is if (selectedItems[i]) { text = text + items[i] + " "; } } return text.trim(); } } |
این میشه خروجیش :
سورس رو هم گذاشتم توی گیت هاب دوس داشتنی :