android - 动态添加单选按钮单选

标签 android json radio-button

我无法获得动态添加到 radio group 中的 radio button 的单一选择。请帮助选择它的单选。以下是我的代码。

我的 fragment 类。

 public class fragment4 extends Fragment {
        View v;
        LinearLayout my_layout;
        //CheckBox checkBox;
        RadioButton checkBox;
        JSONArray jsonArray;
        Context ctx;
    RadioGroup rg;    /* MediaPlayer mp;*/

        public fragment4(){
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // 1.

        }


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            v = inflater.inflate(R.layout.farg4, container, false);
          my_layout = (LinearLayout)v.findViewById(R.id.my_layout);

            getcategory();
            return my_layout;

        }

        public void getcategory() {
            StringRequest request = new StringRequest(Request.Method.POST,
                    StaticDataUtility.Server_URL + "" + StaticDataUtility.getsubcategory, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject joResp = new JSONObject(response);
                        ArrayList<productinfo> sliderList = new ArrayList<>();
                        int success = joResp.getInt("Success");
                        if (success == 1) {
    //                        industryListBeanArrayList.clear();
                            jsonArray = joResp.getJSONArray("result");
    //                        JSONObject joResult = joResp.getJSONObject("result");
    //                        JSONArray jaDetail = joResult.getJSONArray("industry_detail");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject joDetail = jsonArray.getJSONObject(i);
    //                            productinfo slider = new productinfo();
                                if (joDetail.has("subcat_name")) {
                                    rg= new RadioGroup(getContext());
                                    rg.setOrientation(RadioGroup.VERTICAL);
    //                                TableRow row =new TableRow(getActivity());
    //                                row.setId(i);
    //                                row.setLayoutParams(new TableRow.LayoutParams(Toolbar.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
                                    checkBox = new RadioButton(getActivity());
                                   /* checkBox.setOnCheckedChangeListener(v.getContext());*/
                                    checkBox.setId(i);
                                    checkBox.setText(joDetail.getString("subcat_name"));
                                    //row.addView(checkBox);
                                    rg.addView(checkBox);
                                 // my_layout.addView(rg);

                                   my_layout.addView(rg);

                                    // ((ViewGroup)v.findViewById(R.id.radgrpcat)).addView(my_layout);
                                    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                                        @Override
                                        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                                            for (int p=0;p<=jsonArray.length();p++){
                                                if(b){
                                                    String valchk=checkBox.getText().toString().trim();
                                                    FilteredBy.valchk2= new String[]{valchk};
                                                }
                                            }
                                            Log.e("checkbox", String.valueOf(FilteredBy.valchk2.length));
                                        }
                                    });
                                }



                            }

                        } else {
                            Toast.makeText(getActivity(), "Sorry Data Are Not Available ", Toast.LENGTH_SHORT).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },


                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError volleyError) {
                        }
                    }) {
                @Override
                protected Map<String, String> getParams() {
                    HashMap<String, String> params = new HashMap<>();
                    params.put("cat_id", "363");
                    Log.e("params", params.toString());
                    return params;
                }
            };

            request.setRetryPolicy(new
                    DefaultRetryPolicy(60000,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            // Adding request to request queue
            Volley.newRequestQueue(getActivity()).add(request);

        }

    }

here showing all button is selected in image

最佳答案

正如 Mike 在评论中所说,您每次都在创建 RadioGroup。只需将以下代码放在 for 循环之前

rg= new RadioGroup(getContext());
rg.setOrientation(RadioGroup.VERTICAL);
my_layout.addView(rg);

代码应该是这样的(如果我理解正确的话):

rg= new RadioGroup(getContext());
rg.setOrientation(RadioGroup.VERTICAL);
my_layout.addView(rg);
for (int i = 0; i < jsonArray.length(); i++) {

关于android - 动态添加单选按钮单选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41735144/

相关文章:

matlab - 如何获取单选按钮的选定值?

python - 获取python中单选按钮的 "id"值

android - 像 AirDroid 一样在后台拍照

android - CSS 位置 :fixed causes blurry images in Android Browsers

android - 如何使用其他Facebook帐户登录?

javascript - 如何将 JS 对象转换为 JSON?

java - 如何将所有值从一个 JSONObject 复制到另一个?

c# - 反序列化 MandrillApp Webhook 响应

php - 单选按钮选中的属性

android - Dagger 2 与 Kotlin 的多重绑定(bind)