listview实现单选功能
package com.xiaoming;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.CompoundButton;import android.widget.ListView;import android.widget.RadioButton;import android.widget.CompoundButton.OnCheckedChangeListener;public class MainActivity extends Activity {private static final String TAG = "WZP13_RadioGroupActivity";private ListView listView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);listView = (ListView) this.findViewById(R.id.list);MyAdapter adapter = new MyAdapter();listView.setAdapter(adapter);}private class MyAdapter extends BaseAdapter {private String[] s = new String[] { "小天AAA", "小天BBB", "小天CCC", "小天DDD"};private int temp = -1;@Overridepublic int getCount() {// TODO Auto-generated method stubreturn s.length;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = MainActivity.this.getLayoutInflater().inflate(R.layout.item, null);Button button = (Button) convertView.findViewById(R.id.button);button.setText(s[position]);RadioButton radioButton = (RadioButton) convertView.findViewById(R.id.radioButton);radioButton.setId(position);radioButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {if (isChecked) {if (temp != -1) {RadioButton tempButton = (RadioButton) MainActivity.this.findViewById(temp);if (tempButton != null) {tempButton.setChecked(false);}}temp = buttonView.getId();Log.i(TAG, "you are women- - " + isChecked+ " " + temp);}}});if (temp == position) {radioButton.setChecked(true);}return convertView;}}}布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试" > </Button> <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" /></LinearLayout>
适配器不在acitivyt里面,则把activity传到适配器里面去