I want to show a single select option in my list. I am using RadioButton in my listView row. I know that RadioGroup is used for single selection.
But problem is that I have added the RadioButton in my ListRowView. Now I want to add all my list items in one RadioButton. I am using Custom Adapter and in getView(). I get the RadioButton in getView(), but when want to add it in RadioGroup it say
"view already have parent , call removeView() in parent before"
And I know its true, but if I remove it from the view. Then it is not visible.
I also try to create and add RadioButton programmatically. And then add it in RadioGrop. And then to view of list row. But this time as the parent is RadioGroup, so again it say
"view already have parent , call removeView() in parent before"
What I want to do is to select only one item in list at a time. My code is as follows.
public class MyAdapter extends ArrayAdapter < MyMenuItem > { private LayoutInflater mInflater ; int mResource ; List < MyMenuItem > mData ; Context context; public MyAdapter ( Context context , int resource , int textViewResourceId , List < MyMenuItem > data ) { super ( context , resource , textViewResourceId , data ) ; this.context = context; mData = data ; mResource = resource ; mInflater = ( LayoutInflater ) getSystemService ( Context.LAYOUT_INFLATER_SERVICE ) ; } @ Override public View getView ( int position , View convertView , ViewGroup parent ) { ViewHolder holder = null ; if ( convertView == null ) { convertView = mInflater.inflate ( mResource , null ) ; holder = new ViewHolder ( ) ; holder.icon = ( ImageView ) convertView.findViewById ( R.id.icon ) ; holder.text = ( TextView ) convertView.findViewById ( R.id.text ) ; holder.comment = ( TextView ) convertView.findViewById ( R.id.comment ) ; LinearLayout lin = ( LinearLayout ) convertView.findViewById ( R.id.linerList ) ; RadioButton rbtn = new RadioButton ( context ); LayoutParams lparam = new LayoutParams ( LayoutParams.WRAP_CONTENT , LayoutParams.WRAP_CONTENT ); rbtn.setSelected ( false ); holder.check = rbtn; //radioGroup.addView ( rbtn ); lin.addView ( rbtn , 0 ); convertView.setTag ( holder ) ; } else { holder = ( ViewHolder ) convertView.getTag ( ) ; } holder.text.setText ( mData.get ( position ).getText ( ) ) ; holder.comment.setText ( mData.get ( position ).getComment ( ) ) ; holder.icon.setImageResource ( getApplicationContext ( ).getResources ( ).getIdentifier ( mData.get ( position ).getIcon ( ) , "drawable" , getPackageName ( ) ) ) ; return convertView ; } } My XML for the row
<?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="?android:attr/listPreferredItemHeight" android:padding="6dip"> <LinearLayout android:id = "@+id/linerList" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="6dip" /> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="fill_parent"> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:text="My Application" android:textSize="20sp" android:singleLine="true" android:ellipsize="marquee" android:textColor="@color/white" /> <TextView android:id="@+id/comment" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true" android:ellipsize="marquee" android:text="Simple application that shows how to use RelativeLayout" android:textSize="14sp" android:textColor="@color/light_gray" /> </LinearLayout> 
You need to do two things:
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); Checkable. (More info about this here).If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With