首页 > 代码库 > ListView中RadioButton实现单项选择

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

技术分享技术分享

ListView中RadioButton实现单项选择