Theory
તમને ગમે તેટલા પસંદ કરો
FestConnect નો student Robotics અને Dance અને Coding, કોઈ પણ સંયોજનમાં હાજર રહી શકે. તમને એવું નિયંત્રણ જોઈએ જ્યાં એકસાથે અનેક વિકલ્પ સ્વતંત્ર રીતે પસંદ થઈ શકે.
એ છે CheckBox: નિશાન કરી શકાય એવું નાનું ખાનું, દરેક વિકલ્પ દીઠ એક, દરેક જાતે ચાલુ કે બંધ. એ ToggleButton પર તમે મળેલા checked ના નમૂનાને વહેંચે છે, પણ અહીંનો મુખ્ય વિચાર છે સ્વતંત્રતા: એક પર નિશાન કરવાથી બીજાંને કશું થતું નથી, અને 'ગમે તેટલા પસંદ કરો' ને બરાબર એ જ જોઈએ.
Theory
નિશાનનાં ખાનાંવાળી ખરીદીની યાદી
ખરીદીની યાદીમાં દરેક વસ્તુની બાજુમાં નાનું ખાનું હોય છે; તમને જોઈતી દરેક વસ્તુ પર નિશાન કરો છો, અને 'દૂધ' પર નિશાન કરવાની 'બ્રેડ' પર કોઈ અસર થતી નથી. તમે એકેય પર, કેટલાંક પર, કે બધાં પર નિશાન કરી શકો. CheckBoxes એ પડદા પરની એ યાદી છે: દરેક ખાનું પોતાનો નિર્ણય છે. RadioButton ના જૂથ (હવે પછીનો પાઠ) સાથે સરખાવો, જે 'એક માપ પસંદ કરો' જેવું છે, જ્યાં Large પસંદ કરવાથી Medium છૂટી જાય છે.
Theory
દરેક ખાનું સ્વતંત્ર રીતે વાંચો
દરેક CheckBox અલગ છે, અને checked ની જાણીતી પદ્ધતિઓ સાથે:
- `isChecked()`: આ ખાના પર નિશાન છે? (boolean)
- `setChecked(true/false)`: code માંથી નિશાન કરો કે કાઢો.
- `setOnCheckedChangeListener(...)`: એ બદલાય ત્યારે પ્રતિભાવ આપો.
અનેક પસંદગીવાળો જવાબ ભેગો કરવા, તમે દરેક ખાનાનું isChecked() જાતે તપાસો છો. મૂળભૂત CheckBox પ્રમાણભૂત નિશાન દેખાડે છે; પોતાનું બનાવેલું એ android:button ને drawable/selector તરફ ચીંધીને નિશાની બદલે છે.
Practical
FestConnect: તમારાં events પસંદ કરો
// XML: three CheckBoxes with ids robotics, dance, coding
CheckBox robotics = findViewById(R.id.robotics);
CheckBox dance = findViewById(R.id.dance);
CheckBox coding = findViewById(R.id.coding);
register.setOnClickListener(v -> {
StringBuilder chosen = new StringBuilder();
if (robotics.isChecked()) chosen.append("Robotics ");
if (dance.isChecked()) chosen.append("Dance ");
if (coding.isChecked()) chosen.append("Coding ");
Toast.makeText(this, "Events: " + chosen, Toast.LENGTH_LONG).show();
});
// each box is independent: ticking dance does NOT untick roboticsThink first
ત્રણ અલગ ચકાસણી કેમ?
Code એ robotics, dance, અને coding પર અલગ અલગ isChecked() બોલાવે છે. 'પસંદ કરેલા event' માટે એક જ ચકાસણી કેમ નહીં? એ તમને શું કહે છે કે CheckBoxes એ radio ના જૂથથી કેવી રીતે જુદાં છે?
Show the answer
કારણ કે student એકસાથે અનેક events પસંદ કરી શકે છે, એટલે એક જ 'પસંદ કરેલો event' જેવું કશું છે જ નહીં, દરેક ખાનું સ્વતંત્ર હા/ના છે, એટલે તમારે દરેકને પૂછવું પડે. એ સ્વતંત્રતા જ CheckBoxes ને RadioButton ના જૂથથી અલગ પાડે છે: radio નું જૂથ અનેકમાંથી એક પસંદગી દર્શાવે છે (એટલે તમે પૂછો 'કયું પસંદ થયું છે?'), જ્યારે CheckBoxes અનેક સ્વતંત્ર પસંદગીઓ દર્શાવે છે (એટલે તમે દરેકને પૂછો 'તારા પર નિશાન છે?'). અનેક સામે એક, એ જ આખો ભેદ છે.
Quiz
RadioButton ના જૂથને બદલે CheckBoxes ક્યારે વાપરવાં જોઈએ?
- જ્યારે વાપરનાર એકસાથે એક કરતાં વધુ વિકલ્પ પસંદ કરી શકે
- જ્યારે વાપરનારે બરાબર એક જ વિકલ્પ પસંદ કરવો પડે
- જ્યારે તમને એવું બટન જોઈએ જે એક વાર ચાલીને ભૂલી જાય
- જ્યારે તમને જાતે ઓસરી જતો ટૂંકો સંદેશો દેખાડવો હોય
Show the answer
જ્યારે વાપરનાર એકસાથે એક કરતાં વધુ વિકલ્પ પસંદ કરી શકે
CheckBoxes અનેક પસંદગી માટે છે: વાપરનાર ગમે તેટલા સ્વતંત્ર વિકલ્પો પર નિશાન કરી શકે (A). બરાબર એક પસંદ કરવાનું કામ RadioButton ના જૂથનું છે (B). કરીને ભૂલી જવાની ક્રિયા એ સાદું Button છે (C), અને જાતે ઓસરી જતો ટૂંકો સંદેશો એ Toast છે (D). યાદ રાખો: CheckBox = અનેક, RadioButton = એક. એ પસંદગી જ નક્કી કરે છે કે તમે કયું widget મૂકો.
Watch out
CheckBox ના ફાંદા
1. ફક્ત એક જ પસંદગી માન્ય હોય ત્યાં CheckBoxes વાપરવાં: જો વિકલ્પો પરસ્પર બાકાત હોય (એક જ માપ, એક જ વર્ષ), તો CheckBoxes નહીં પણ RadioButton નું જૂથ વાપરો.
2. અવસ્થાને બદલે લેબલ તપાસવું: boolean માટે isChecked() વાપરો, લખાણ નહીં.
3. દરેક ખાનું સ્વતંત્ર છે એ ભૂલી જવું: આપોઆપ 'બીજાં પરથી નિશાન કાઢી નાખો' જેવું કશું નથી; એ વર્તન ફક્ત RadioGroup માંથી જ આવે છે.
Theory
આગળ: બરાબર એક પસંદ કરો
ઊલટી જરૂરિયાત માટે, એટલે કે એક જ વર્ષ (પહેલું/બીજું/ત્રીજું) પસંદ કરવા, CheckBoxes ખોટાં છે કારણ કે student એક જ વર્ષમાં હોય છે. હવે પછીનો પાઠ છે RadioButton, જે RadioGroup માં જૂથબદ્ધ થાય છે જેથી એક પસંદ કરવાથી બાકીનાં આપોઆપ છૂટી જાય. એ isChecked() ને ફરી વાપરે છે પણ અહીં જેનો ઇશારો મળ્યો એ એક-પસંદગીનું જૂથ ઉમેરે છે.
Summary
Key takeaways
- CheckBox એ સ્વતંત્ર રીતે નિશાન કરી શકાય એવું ચાલુ/બંધ ખાનું છે, જે વાપરનાર અનેક વિકલ્પ પસંદ કરી શકે ત્યારે વપરાય છે.
- isChecked() થી વાંચો (boolean), setChecked() થી ગોઠવો, setOnCheckedChangeListener થી પ્રતિભાવ આપો.
- અનેક પસંદગીવાળો જવાબ દરેક ખાનાનું isChecked() સ્વતંત્ર રીતે તપાસીને ભેગો કરો.
- એક CheckBox પર નિશાન કરવાથી બીજાંને અસર થતી નથી (આપોઆપ બાકાત થવાનું નહીં).
- અનેક પસંદગી માટે CheckBoxes વાપરો; બરાબર એક માટે RadioButton નું જૂથ.
- Memory hook: સ્વતંત્ર નિશાનનાં ખાનાંવાળી ખરીદીની યાદી.