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:运行结果

  • 相关阅读:
    LOJ 10160
    LOJ 10155
    2018-11-1 NOIP 模拟赛解题报告
    联考前停课集训随笔
    一个博客园代码高亮的方案
    详解使用 Tarjan 求 LCA 问题(图解)
    NOIP2018普及初赛解析
    关于CCR测评器的自定义校验器(Special Judge)
    日常,异常处理
    Androidstudio 编译慢 这样的体验肯定很多人都有!!!
  • 原文地址:https://www.cnblogs.com/yshyee/p/4199143.html
Copyright © 2011-2022 走看看