একটি অ্যান্ড্রয়েড রেডিওগ্রুপের নির্বাচিত সূচি সেট করুন


96

চাইল্ড রেডিওবোটনের মাধ্যমে লুপিং করা এবং নির্বাচিত সূচকে রেডিও বোতামটি নির্বাচন করা বাদে অ্যান্ড্রয়েডে কোনও রেডিওগ্রুপের নির্বাচিত সূচক সেট করার কোনও উপায় আছে কি?

দ্রষ্টব্য: আমি রান সময়ে রেডিও বোতাম গ্রুপকে জনসাধারণের মধ্যে আছি।

উত্তর:


203

যদি আপনার রেডিও গ্রুপটি একটি লেআউট এক্সএমএল ফাইলে সংজ্ঞায়িত করা হয় তবে প্রতিটি বোতাম একটি আইডি বরাদ্দ করা যেতে পারে। তারপরে আপনি ঠিক এটির মতো একটি বোতাম চেক করুন

radioGroup.check(R.id.myButtonId);

আপনি যদি আপনার রেডিও গ্রুপকে প্রোগ্রামগতভাবে তৈরি করেন (তবে এটি কীভাবে করবেন তাও আমি নিশ্চিত নই ...), আপনি কেবল রেডিও গ্রুপের জন্য একটি বিশেষ লেআউট এক্সএমএল ফাইল তৈরি করার বিষয়টি বিবেচনা করতে চাইতে পারেন যাতে আপনি আর.আইডি নির্ধারণ করতে পারেন * * আইডি বোতাম।

দয়া করে নীচের উত্তরটি দেখুন যদি আপনি প্রকৃতপক্ষে সূচকে রেডিও বোতাম গোষ্ঠীটি নির্ধারণের জন্য খুঁজছেন তবে নীচের উত্তরটি দেখুন।

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

4
হাই, আমি তাদের এই প্রোগ্রামটি ব্যবহার করে এই প্রোগ্রামটি তৈরি করেছি: (int i = 0; i <lookTypes.size (); i++) {// রেডিওবটন আরবিটি = নতুন রেডিওবটন (এটি); //, নাল, // আর ​​স্টাইল। রেডিওগ্রুপ আইটেম); রেডিওবটন আরবিটি = (রেডিওবটন) getLayoutInflater ()। Inflet (R.layout.tmpltradiobutton, নাল); rbt.setId (i); rbt.setText (lookupTypes.get (i) .getValue ()); rbt.setTag (lookupypes.get (i)); rbtnGroup.addView (আরবিটি); }
হাসান মোকাদ্দাদ

যেহেতু আপনি অনুসন্ধানের টাইপগুলিতে সূচকগুলিতে তাদের আইডিগুলি সেট করছেন, আপনি কেবলমাত্র সেই সূচকটিকে checkপদ্ধতির যুক্তি হিসাবে ব্যবহার করতে পারেন ।
jjm

এই উত্তরটি আক্ষরিকভাবে কেবল আবার ব্যাখ্যা করে যে প্রশ্নকারী ইতিমধ্যে বলেছে - অন্য উত্তরটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি সঠিকভাবে সূচক দ্বারা কীভাবে নির্বাচন করতে হয় তা বলে।
লাসি কিনুনেনেন

এই উত্তরে upvotes সংখ্যা মত @LassiKinnunen আমি অনুভব দাড়ায় যে মানুষ পাচ্ছেন তারা যা তা থেকে প্রয়োজন ... যে বলেন, তুমি কি ঠিক আছো যে অন্যান্য উত্তর জিজ্ঞাসা প্রশ্নের জন্য আরো ঠিক কিনা: - /
jjm

4
সত্যই আমি কিছুটা বিব্রত বোধ করি যে এটি আমার সর্বোচ্চ ভোট প্রাপ্ত এসও উত্তর।
jjm

87

প্রশ্নটি "নির্বাচিত INDEX সেট" বলেছিল, এটি সূচী দ্বারা এটি কীভাবে সেট করবেন তা এখানে:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

........

অতিরিক্ত তথ্য: মনে হয় গুগল আপনাকে সূচকের পরিবর্তে আইডি ব্যবহার করতে চায় কারণ আইডি ব্যবহার করা আরও বাগ প্রুফ। উদাহরণস্বরূপ, যদি আপনার রেডিওগ্রুপে অন্য একটি ইউআই উপাদান থাকে, বা অন্য বিকাশকারী যদি রেডিওব্যাটনগুলিকে পুনরায় অর্ডার দেয় তবে সূচকগুলি পরিবর্তিত হতে পারে এবং আপনি যা প্রত্যাশা করেছিলেন তা তা নাও হতে পারে। তবে আপনি যদি একমাত্র বিকাশকারী হন তবে এটি পুরোপুরি ঠিক আছে।


আপনি এই কোডটি ব্যাখ্যা করতে পারেন, এটি কীভাবে সঠিক উত্তর?
rfornal

4
@ আরফরনাল এই কোডটি আপনাকে আইএনডিএক্স দ্বারা রেডিও বোতামটি ধরতে দেয়, ভিউ আইডির বিপরীতে (যেমন R.id.radioButton1) এবং আইডি দেখার জন্য সূচী রূপান্তর করতে একটি সারণী প্রয়োগের প্রয়োজনীয়তা হ্রাস করে।
সায়াবশ

5

সিভাশের উত্তর সঠিক:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

তবে সচেতন থাকুন যে একটি রেডিওগ্রুপে রেডিওবটনগুলি ছাড়াও অন্য মতামত থাকতে পারে - যেমন উদাহরণ যা প্রতিটি পছন্দ অনুসারে একটি বিবর্ণ রেখা অন্তর্ভুক্ত করে।

<RadioGroup
    android:id="@+id/radioKb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <RadioButton
        android:id="@+id/kb1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Onscreen - ABC" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

    <RadioButton
        android:id="@+id/kb2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Onscreen - Qwerty" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

    <RadioButton
        android:id="@+id/kb3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Standard softkey" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

    <RadioButton
        android:id="@+id/kb4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:button="@null"
        android:drawableRight="@android:drawable/btn_radio"
        android:text="Physical keyboard" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#33000000" />

</RadioGroup>

এই ক্ষেত্রে 1 এর সূচক ব্যবহার করা উদাহরণস্বরূপ, একটি ত্রুটি তৈরি করবে। সূচী 1 এ আইটেমটি প্রথম বিভাজক লাইন - একটি রেডিওবটন নয়। এই উদাহরণে রেডিওবাটনগুলি 0, 2, 4, 6 সূচীতে রয়েছে।


3

আপনি রেডিও গ্রুপ থেকে FindViewById করতে পারেন।

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`

2

এটি আমার জন্য ওয়ার্কড, আমি গতিসম্পন্নভাবে রেডিও বোতামটি তৈরি করেছি

  private void createRadioButton() {

    RadioButton[] rb = new RadioButton[5];

    RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            1.0f);

    radioGroup.setOrientation(RadioGroup.HORIZONTAL);

    for (int ID = 0; ID < 5; ID++) {
        rb[ID] = new RadioButton(this);
        rb[ID].setLayoutParams(layoutParams);
        rb[ID].setText("Button_Text");
        radioGroup.addView(rb[ID]); //the RadioButtons are added to the radioGroup instead of the layout
    }
}

এখন একটি বোতাম ব্যবহার করে চেক করুন,

int radio_button_Id = radioGroup.getChildAt(index).getId();

radioGroup.check( radio_button_Id );

0

অনবিন্দ ভিউহোল্ডার ভিতরে বাটন গ্রুপে ট্যাগ সেট করুন

@Override
public void onBindViewHolder(final CustomViewHolder holder, final int position) {
   ...
   holder.ButtonGroup.setTag(position);
}

এবং ভিউহোল্ডারটিতে

ButtonGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
        ...
        int id = radioGroup.getCheckedRadioButtonId();

        RadioButton radioButton = (RadioButton) radioGroup.findViewById(id);

        int clickedPos = (Integer) radioGroup.getTag();

        packageModelList.get(clickedPos).getPoll_quest()
    }

0

কোটলিন ব্যবহার করে আপনি এটি তৈরি করতে পারেন

  (radio_group_id.getChildAt(index) as RadioButton).isChecked = true

বা

radio_group_id.check(R.id.radio_button_id)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.