zoukankan      html  css  js  c++  java
  • ListView中RadioButton实现单项选择

    1:FragmentHack5.java

    public class FragmentHack5 extends Fragment {
        View view;
        ListView lvCountries;
        Button btnShow;
        CountryListAdapter adapter;
        List<String> list;
    
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
    
            list = new ArrayList<String>();
            list.add("中国");
            list.add("俄罗斯");
            list.add("美国");
            list.add("德国");
            list.add("英国");
            list.add("西班牙");
            list.add("法国");
            list.add("巴西");
            list.add("印度");
    
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            view = inflater.inflate(R.layout.fragment_hack5,container,false);
    
            btnShow = (Button)view.findViewById(R.id.btnShow);
            lvCountries = (ListView)view.findViewById(R.id.lvCountries);
    
            adapter = new CountryListAdapter(getActivity(),R.layout.list_country_item,list);
    
            lvCountries.setAdapter(adapter);
    
            btnShow.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getActivity(),adapter.getChoiceCountry(),Toast.LENGTH_SHORT).show();;
                }
            });
    
            return view;
        }
    }

    2:CountryListAdapter.java

    public class CountryListAdapter extends ArrayAdapter<String>{
    
        int resourceId;
        int choiceId = -1;
    
        public CountryListAdapter(Context context, int resourceId, List<String> objects){
            super(context,resourceId,objects);
    
            this.resourceId = resourceId;
        }
    
    
    
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            String country = getItem(position);
            final ViewHolder holder;
    
            if(convertView==null){
                holder = new ViewHolder();
                convertView = LayoutInflater.from(getContext()).inflate(resourceId,null);
    
                holder.rbCountry = (RadioButton)convertView.findViewById(R.id.rbCountry);
    
                convertView.setTag(holder);
            }else{
                holder = (ViewHolder)convertView.getTag();
            }
    
            holder.rbCountry.setText(country);
    
            if(choiceId==position){
                holder.rbCountry.setChecked(true);
            }else{
                holder.rbCountry.setChecked(false);
            }
    
    
            holder.rbCountry.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(holder.rbCountry.isChecked()){
                        choiceId = position;//记住当前选中的下标
                        CountryListAdapter.this.notifyDataSetChanged();
                    }
                }
            });
    
            return convertView;
        }
    
        static class ViewHolder{
            public RadioButton rbCountry;
        }
    
    
        public String getChoiceCountry(){
            return getItem(choiceId);
        }
    }

    3:运行结果

  • 相关阅读:
    [BZOJ 1012][JSOI2008]最大数maxnumber(线段树)
    [BZOJ 1011][HNOI2008]遥远的行星(奇技淫巧)
    [BZOJ 1010][HNOI2008]玩具装箱toy(斜率优化Dp)
    [HDU 3507]Print Article(斜率优化Dp)
    [BZOJ 1006][HNOI2008]神奇的国度(MCS弦图的染色)
    [ZOJ 1015]Fishing Net(MCS弦图的判定)
    进程的状态及转换
    程序、进程、线程的概念与比较
    ES6 模块化规范
    DNS域名解析过程(详细)
  • 原文地址:https://www.cnblogs.com/yshyee/p/4199143.html
Copyright © 2011-2022 走看看