Mohamad Najib
Mohamad Najib

Reputation: 49

Counting score from RadioButton

How to count score from radiobutton ?

I've radio1, radio7, radio8, radio14. Each radiobutton stored in different radioGroup, radio1 in radioGroup1, radio7 in radioGroup2, radio8 in radioGroup3. I tried using if statement but not efficient, I tried using switch statement but cant count my score

It's my if statement :

    RadioButton kunci1 = (RadioButton) findViewById(R.id.radio1);
    RadioButton kunci2 = (RadioButton) findViewById(R.id.radio7);
    RadioButton kunci3 = (RadioButton) findViewById(R.id.radio8);
    RadioButton kunci4 = (RadioButton) findViewById(R.id.radio14);

    int score=0;
    if (kunci.isChecked() && kunci2.isChecked() && kunci3.isChecked() && kunci4.isChecked()){
    score = 100;
    } else if ((kunci1.isChecked() && kunci2.isChecked() && kunci3.isChecked())......)
     score=75;

It's my switch statment (nilai is score in indonesian) :

int nilai=25;
    switch(nilai) {
        case R.id.radio1:
            if (kunci1.isChecked())
                nilai++;
        case R.id.radio7:
            if (kunci2.isChecked())
                nilai++;
        case R.id.radio8:
            if (kunci3.isChecked())
                nilai++;
        case R.id.radio14:
            if (kunci4.isChecked())
                nilai++;
        default :
            break;
    }

It's my layout :

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<RelativeLayout
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="504dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="17dp"
        android:layout_marginTop="18dp"
        android:text="1. Can&apos;t fetch from server" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. ITB" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. IPB" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. UPB" />

        <RadioButton
            android:id="@+id/radio3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. IPI" />
    </RadioGroup>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup1"
        android:layout_below="@+id/radioGroup1"
        android:layout_marginTop="22dp"
        android:text="2. Can&apos;t fetch from server" />

    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2" >

        <RadioButton
            android:id="@+id/radio4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. Institut Pertanian Bandung" />

        <RadioButton
            android:id="@+id/radio5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. Institut Pertanian Bali" />

        <RadioButton
            android:id="@+id/radio6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. Institut Perbankan Bogor" />

        <RadioButton
            android:id="@+id/radio7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D. Institut Pertanian Bogor" />
    </RadioGroup>

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup2"
        android:layout_below="@+id/radioGroup2"
        android:layout_marginTop="20dp"
        android:text="3. Can&apos;t fetch from server" />

    <RadioGroup
        android:id="@+id/radioGroup3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView3"
        android:layout_below="@+id/textView3" >

        <RadioButton
            android:id="@+id/radio8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. Laksmi Irianti" />

        <RadioButton
            android:id="@+id/radio9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. Henni" />

        <RadioButton
            android:id="@+id/radio10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. Yeni" />

        <RadioButton
            android:id="@+id/radio11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D. Inna Novianti" />
    </RadioGroup>

     <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup3"
        android:layout_below="@+id/radioGroup3"
        android:layout_marginTop="20dp"
        android:text="4. Can&apos;t fetch from server" />

     <RadioGroup
        android:id="@+id/radioGroup4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView4"
        android:layout_below="@+id/textView4" >

        <RadioButton
            android:id="@+id/radio12"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="A. Komunikasi" />

        <RadioButton
            android:id="@+id/radio13"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B. PPP" />

        <RadioButton
            android:id="@+id/radio14"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C. Tekom" />

        <RadioButton
            android:id="@+id/radio15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D. PKS" />
    </RadioGroup>

     <Button
         android:id="@+id/button1"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/radioGroup4"
         android:text="Submit" 
         android:onClick="submit"/>

     <TextView
         android:id="@+id/textView5"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentTop="true"
         android:layout_centerHorizontal="true"
         android:text="Timer" />

</RelativeLayout>

Upvotes: 0

Views: 1232

Answers (2)

Kostas Kryptos
Kostas Kryptos

Reputation: 4111

Your problem is easier than you think, you just need a couple of sequential independent if statements (or a ternary operator of-course) to update your score e.g.

int score=0;
if (kunci1.isChecked()) score += 25;
if (kunci2.isChecked()) score += 25;
if (kunci3.isChecked()) score += 25;
if (kunci4.isChecked()) score += 25;
//...

or for one-liner

int score = 25 * ((kunci1.isChecked() ? 1 : 0) + (kunci2.isChecked() ? 1 : 0) + ...)

Upvotes: 1

UtsavShah
UtsavShah

Reputation: 877

You can do something like maintain an array of radio buttons and iterate through them.

ArrayList<RadioButton> buttons = new ArrayList<>();

buttons.add((RadioButton) findViewById(R.id.radio1));
buttons.add((RadioButton) findViewById(R.id.radio7));
buttons.add((RadioButton) findViewById(R.id.radio8));
buttons.add((RadioButton) findViewById(R.id.radio14));

for(RadioButton button : buttons){
    if (button.isChecked()){
        nilai+= 25;
    }  
}

If you still want to keep your original buttons, then you can use the ternary operator, but it will be less readable:

nilai += kunci.isChecked() ? 25 : 0 +  kunci2.isChecked() ? 25 : 0 + 
kunci3.isChecked() ? 25 : 0 +  kunci4.isChecked() ? 25 : 0 ;

Upvotes: 1

Related Questions