listview中的radiobutton如何实现单选并在avtivity中取到他的值
2013-07-10 10:23
411 查看
写一个自己的适配器:
activity:取到radioButton更改后的值
我的xml文件:
item的xml:
public class QW_HomePage_listAdapter extends BaseAdapter{ Context context; List<HashMap<String,Object>> datas; public static HashMap<String,Boolean> isSelected = new HashMap<String, Boolean>(); private LayoutInflater inflater = null; boolean res; static int isFirst =0; public QW_HomePage_listAdapter(Context context,List<HashMap<String,Object>> datas) { //System.out.println("---in adapter----"); this.context = context; this.datas = datas; inflater = LayoutInflater.from(context); for(int i = 0;i<datas.size();i++) { //System.out.println("states:"+(Boolean)datas.get(i).get("state")); isSelected.put(String.valueOf(i), (Boolean)datas.get(i).get("state")); } } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null){ //System.out.println("position == :"+position); holder = new ViewHolder(); //获得layout convertView = inflater.inflate(R.layout.qw_homepage_item, null); holder.rb = (RadioButton) convertView.findViewById(R.id.qw_homepage_rb); //为view设置标签 convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag(); } //System.out.println("(String)datas.get(position).get('textview')"+(String)datas.get(position).get("textview")); holder.rb.setText((String)datas.get(position).get("text")); //System.out.println("---states---"+(Boolean)datas.get(position).get("state")); holder.rb.setChecked((Boolean)datas.get(position).get("state")); //点击事件 holder.rb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View paramView) { //System.out.println("选中的是第"+position+"条记录"); //重置,确保最多只有一项被选中 for(String key:isSelected.keySet()){ //System.out.println("key:"+key); isSelected.put(key,false); } isSelected.put(String.valueOf(position),true); QW_HomePage_listAdapter.this.notifyDataSetChanged(); } }); boolean res=false; if(isSelected.get(String.valueOf(position)) == null || isSelected.get(String.valueOf(position))== false){ //System.out.println("ont if"); res=false; isSelected.put(String.valueOf(position), false); } else{ res=true; } holder.rb.setChecked(res); return convertView; }
activity:取到radioButton更改后的值
boolean states[]={false,true,false,false}; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.qw_default_homepage); listview = (ListView)findViewById(R.id.qw_homepage_listview); layout = (LinearLayout)findViewById(R.id.qw_default_homepage); myGestureDetector = new GestureDetector(this); layout.setOnTouchListener(this); layout.setLongClickable(true); //设置title并获取控件 back_btn = (Button)findViewById(R.id.qw_title_left_back); back_btn.setBackgroundResource(R.drawable.qw_left_back); back_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View paramView) { // TODO Auto-generated method stub QW_DefaultHomePageActivity.this.finish(); } }); save_btn = (Button)findViewById(R.id.qw_title_right_button); save_btn.setVisibility(0); save_btn.setBackgroundResource(R.drawable.qw_right_save); title_top_tv = (TextView)findViewById(R.id.title_center_title); title_top_tv.setText("默认首页设置"); String temps[]={"咨询","通信录","通知","办公"}; //boolean states[]={false,true,false,false}; for(int i = 0;i<temps.length;i++){ HashMap<String, Object> map = new HashMap<String, Object>(); map.put("text",temps[i]); map.put("state",states[i]); datas.add(map); } adapter = new QW_HomePage_listAdapter(QW_DefaultHomePageActivity.this, datas); listview.setAdapter(adapter); save_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub saveFile(); Toast.makeText(QW_DefaultHomePageActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); } }); }//end oncreat private HashMap<String, Boolean> state; //保存更改后的信息 public void saveFile(){ state=adapter.isSelected; for(int j=0;j<adapter.getCount();j++){ System.out.println("state.get("+j+")=="+state.get(String.valueOf(j))); if(state.get(String.valueOf(j))!=null && state.get(String.valueOf(j))== true ){ @SuppressWarnings("unchecked") HashMap<String, Object> map=(HashMap<String, Object>) adapter.getItem(j); String username=map.get("text").toString();
//取到更改后的RadioButton的值 System.out.println("--username---"+username); } } Toast.makeText(QW_DefaultHomePageActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); QW_DefaultHomePageActivity.this.finish(); }我的viewholder:
public class ViewHolder { public CheckBox cb; public TextView tv; public ImageView iv; public RadioButton rb; }
我的xml文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/qw_default_homepage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:orientation="vertical" > <include layout="@layout/qw_setting_title_top" /> <RelativeLayout android:id="@+id/RelativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/qw_homepage_listview" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </RelativeLayout> </LinearLayout>
item的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:orientation="horizontal" > <RadioButton android:id="@+id/qw_homepage_rb" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:layout_marginLeft="10dp" android:textSize="20sp" android:focusable="false" android:text="RadioButton" /> </LinearLayout>
相关文章推荐
- ListView配合RadioButton实现单选列表
- Android开发,listview+radiobutton实现单选(选项可编辑)
- 在ListView的Item中使用RadioButton实现单选
- Repeater 里的 Radiobutton 如何实现单选
- listview中的radiobutton实现单选的两种方式而且可以控制另一控件button的是否可见
- Android ListView中点击单行实现RadioButton的单选功能,自定义Item布局文件
- ListView如何实现单选,默认选中一条。
- 如何在Android的ListView中构建CheckBox和RadioButton列表(支持单选和多选的投票项目示例)
- android-------listview 实现radiobutton 单选
- Listview的item包含radiobutton实现单选,checkbox也适用
- ListView 中使用RadioButton实现单选
- ListView滚动翻页,Radiobutton实现单选
- Android:ListView(列表)与RadioButton实现列表单选
- 如何实现RadioButton在GridView中单选
- asp.net中Repeater控件里Radiobutton如何实现单选
- RadioButton在数据列表中实现单选功能
- Android 使用CheckBox实现ListView自定义单选
- RadioButton listView实现
- 关于DataGrid中如何实现单选按钮的问题
- ListView控件的列表项的文字不满一行的时候,如何实现点击该列表项的空白区域仍可触发列表项的点击事件