ListView 中使用RadioButton實現單選
阿新 • • 發佈:2019-01-29
1.activity_main.xml
<?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" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
2.item.xml
<?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>
3.MainActivity
package com.example.test; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CompoundButton; import android.widget.Toast; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ListView; import android.widget.RadioButton; public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private ListView listView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_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[]{"a","b","c","d","e"}; private int temp = -6; @Override public int getCount() { // TODO Auto-generated method stub return s.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder; if(convertView == null){ convertView = MainActivity.this.getLayoutInflater().inflate(R.layout.item, null); holder = new Holder(); convertView.setTag(holder); }else{ holder = (Holder) convertView.getTag(); } holder.button = (Button) convertView.findViewById(R.id.button); holder.button.setText(s[position]); holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "button", Toast.LENGTH_SHORT).show(); } }); holder.radioButton = (RadioButton) convertView.findViewById(R.id.radioButton); holder.radioButton.setId(position); holder.radioButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ if(temp != -6){ RadioButton tempButton = (RadioButton) MainActivity.this.findViewById(temp); tempButton.setChecked(false); } temp = buttonView.getId(); Log.i(TAG,"you are women- - " + isChecked + " " + temp); //如果點選了ListView條目,在這裡拿到Position做想要的操作... } } }); return convertView; } private class Holder{ private Button button; private RadioButton radioButton; } } }