Question

In my code, If we need particular number of checkbox or radio button, by giving the count value in EditText, we can get the particular number of checkbox. But It is displaying the checkbox with random alphabets from a to z. But, I need it to change/rename specifically based on my need. Your help is highly appreciated. Thanks in advance. Here is my code.

XML Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity" >

    <EditText
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="12dp"
            android:layout_marginTop="05dp"
            android:hint="Enter Text" />

    <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/button1"
            android:layout_alignBottom="@+id/button1"
            android:layout_alignParentRight="true"
            android:layout_marginRight="05dp"
            android:text="Edit Text" />

    <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/button2"
            android:text="Check Box" />

    <Button
            android:id="@+id/button5"
            android:layout_width="98dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/button4"
            android:text="Radio Button" />


    <EditText
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/button4"
            android:layout_alignParentLeft="true"
            android:hint="Enter no" />


    <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button5"
            android:gravity="left"
            android:orientation="vertical" />

    <RadioGroup
            android:id="@+id/radiogroup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/linearLayout"
            android:layout_centerHorizontal="true"
            android:orientation="vertical" />

</RelativeLayout>

Main Activity

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.*;
import android.widget.LinearLayout.*;

import java.util.Random;

public class MainActivity extends Activity {
    private LinearLayout mLayout;
    private EditText mEditText;
    private Button mButton;
    Button abutton;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mLayout = (LinearLayout) findViewById(R.id.linearLayout);
        mEditText = (EditText) findViewById(R.id.button1);
        mButton = (Button) findViewById(R.id.button2);
        mButton.setOnClickListener(onClick());
        TextView textView = new TextView(this);
        textView.setText("New text");


        final EditText button2=(EditText)findViewById(R.id.button3);

        findViewById(R.id.button5).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


                int number=Integer.parseInt(button2.getText().toString());
                addRadioButtons(number);
            }
        });

        findViewById(R.id.button4).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


                int number=Integer.parseInt(button2.getText().toString());
                addCheckBox(number);
            }
        });
    }
    public void addRadioButtons(int number) {

        for (int row = 0; row < 1; row++) {
            LinearLayout ll = new LinearLayout(this);
            ll.setOrientation(LinearLayout.HORIZONTAL);

            for (int i = 1; i <= number; i++) {
                RadioButton rdbtn = new RadioButton(this);
                rdbtn.setId((row * 2) + i);
                rdbtn.setText("Radio " + rdbtn.getId());
                ll.addView(rdbtn);
            }
            ((ViewGroup) findViewById(R.id.radiogroup)).addView(ll);
        }

    }

    public void addCheckBox(int number) {

        //Edited Here
        String[] names = {"Sanket", "Kumar", "Rahul"};

        for (int row = 0; row < 1; row++) {
            LinearLayout ll = new LinearLayout(this);
            ll.setOrientation(LinearLayout.HORIZONTAL);

            for (int i = 1; i <= number; i++) {
                CheckBox ch = new CheckBox(this);
                ch.setId((row * 2) + i);

                //ch.setText(randomString(3));

                ch.setText(names[i]);
                ll.addView(ch);
            }
            ((ViewGroup) findViewById(R.id.radiogroup)).addView(ll);
        }


    }
    private String randomString(int len) {
        char[] chars = "abcdefghijklmnopqrstuvwxyz".toCharArray();
        StringBuilder sb = new StringBuilder(len);
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            char c = chars[random.nextInt(chars.length)];
            sb.append(c);
        }
        String output = sb.toString();
        System.out.println(output);
        return sb.toString();
    }
    private OnClickListener onClick() {
        return new OnClickListener() {

            @Override
            public void onClick(View v) {
                mLayout.addView(createNewTextView(mEditText.getText().toString()));
            }
        };
    }

    private TextView createNewTextView(String text) {
        final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        final TextView textView = new TextView(this);
        textView.setLayoutParams(lparams);
        textView.setText("" + text);
        return textView;
    }


}
Was it helpful?

Solution

make an String Array like

String[] names = {"Sanket", "Kumar", ......};

then in the code

for (int i = 1; i <= number; i++) {
                CheckBox ch = new CheckBox(this);
                ch.setId((row * 2) + i);

                // Replace the line with
                //ch.setText(randomString(3)); 

                // with this line
                ch.setText(names[i]);  

                ll.addView(ch);
            }

OTHER TIPS

In your addCheckBox() method, you have set the text of checkbox to randomstring (ch.setText(randomString(3))). Just change this line as your choice just like this ch.setText("Checkbox" + i).

for (int i = 1; i <= number; i++) {
                CheckBox ch = new CheckBox(this);
                ch.setId((row * 2) + i);
                ch.setText(randomString(3)); // Change Here
                ll.addView(ch);
            }

change the text of checkBox in ch.setText that you want to be

Ok.. I really don't understand... When you create the checkbox you set its text to ch.setText(randomString(3)); Why would you do that if you want specific text ?

Random != Specific.

Just write something like this:

ch.setText("Your desired text");

Or you could create an

String[] checkBoxFruits= {"apple","mango","kiwi"};

and then set the text something like:

for ( int i=0; i<numberOfCheckBoxes; i++ )
{
 CheckBox ch = new CheckBox(this);
 ch.setId((row * 2) + i);
 ch.setText(checkBoxFruits[i]);
 ll.addView(ch);
}
public void addCheckBox(int number) {

    String[] names = {"Sanket", "Kumar", "Eagle"};
    for (int row = 0; row < 1; row++) {
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);

        for (int i = 1; i <= number; i++) {
            CheckBox ch = new CheckBox(this);
            ch.setId((row * 2) + i);
            if(i != names.length)
               ch.setText(names[i-1]);
            else
               ch.setText("New name");
            ll.addView(ch);
        }
        ((ViewGroup) findViewById(R.id.radiogroup)).addView(ll);
    }


}

Use above code.. And check it...

I think you should try using RadioGroup and create an array of strings with which can easily use .setText method to run a loop throgh all the Radio Buttons.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top