title: How to set custom color to a Radio button at selected positionwhich is item of a listview
body: <p>I am not able to set customized color to a Radio Button in a listview at selected position. It is getting selected at different position and at the same time if i scroll the listview the items i selected are changing the position as well as the Radio button.</p>
  
  <p>List of items were populated from Database and able to inflate the items.</p>
  
  <p>activity_student_stats.xml code is here:</p>
  
  <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginLeft="5dp"
  android:layout_marginRight="5dp"
  android:background="@android:color/transparent"
  android:orientation="horizontal"
  android:weightSum="3" &gt;
  
  &lt;TextView
      android:id="@+id/name"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1.6"
      android:maxLength="25"
      android:padding="10dp"
      android:textAppearance="?android:attr/textAppearanceSmall"
      android:textColor="#000000"
      &gt;
  &lt;/TextView&gt;
  
  &lt;RadioGroup
      android:id="@+id/radiogroup1"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_marginLeft="15dp"
      android:layout_weight="1.4"
      android:clickable="false"
      android:descendantFocusability="blocksDescendants"
      android:gravity="center_horizontal"
      android:orientation="horizontal"
      android:weightSum="1.4" &gt;
  
      &lt;RadioButton
          android:id="@+id/present_radio"
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_gravity="center_vertical"
          android:layout_weight="0.6"
          android:button="@drawable/radio_background"
           /&gt;
  
      &lt;RadioButton
          android:id="@+id/absent_radio"
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_gravity="center_vertical"
          android:layout_weight="0.6"
          android:button="@drawable/radio_background"
  
           /&gt;
  &lt;/RadioGroup&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Here is my code for Custom Adapter:</p>
  
  <pre><code>public class ArrayAdapterActivity extends ArrayAdapter&lt;String&gt;{
  
  private Context context;
  private List&lt;String&gt; StudentInfo;
  int pos=0;
  
  private boolean userSelected=false;
  private RadioButton mcheckedRB;
  ViewHolder holder;
  
  public ArrayAdapterActivity(Context context, String[] values){
  
      super(context, R.layout.activity_student_stats, values);
  
      this.context=context;
  
      this.StudentInfo=Arrays.asList(values);
  
  
  }
  
  public ArrayAdapterActivity(Context context){
  
      super(context, R.layout.activity_student_stats);
      this.context=context;
  }
  
  @Override
  public boolean hasStableIds(){
  
      return true;
  }
  
  @Override
  public View getView(final int position, View convertView, ViewGroup parent){
  
      View rowView=convertView;
  
      if(convertView==null){
  
      LayoutInflater infalter=  (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          rowView=infalter.inflate(R.layout.activity_student_stats, parent,false);
  
          holder=new ViewHolder();//Holder initiation
  
          holder.position=position;
  
          holder.label=(TextView) rowView.findViewById(R.id.name);
  
          holder.presentAbsentRadio=(RadioGroup) rowView.findViewById(R.id.radiogroup1);
          holder.present_radio=(RadioButton) rowView.findViewById(R.id.present_radio);
          holder.absent_radio=(RadioButton) rowView.findViewById(R.id.absent_radio);
          rowView.setTag(holder);
          holder.presentAbsentRadio.setTag(position);
          holder.present_radio.setTag(position);
          holder.absent_radio.setTag(position);
  
      }
      else{
  
          holder=(ViewHolder) rowView.getTag();
      }
  
      holder.label.setText(StudentInfo.get(position).toString());
  
      if(position==getCount()-1 &amp;&amp; userSelected == false){
  
          mcheckedRB=holder.present_radio;
      }
  
      holder.presentAbsentRadio.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  
          @Override
          public void onCheckedChanged(RadioGroup radiogrp, int CheckedId) {
              // TODO Auto-generated method stub
  
              boolean isSelected=(CheckedId==R.id.present_radio);
              int getposition=(Integer) radiogrp.getTag();
  
              if(CheckedId==R.id.present_radio){
                  holder.present_radio.setButtonDrawable(R.drawable.radio_button_green);
  
                  holder.present_radio.setSelected(true);
  
                  //To Uncheck the absent button incase it was checked
  
                  holder.absent_radio.setButtonDrawable(R.drawable.radio_background);
                  holder.absent_radio.setChecked(false);
              }
              else{
  
                  holder.absent_radio.setButtonDrawable(R.drawable.radio_button_red);
                  holder.absent_radio.setSelected(true);
  
                  //To Uncheck the present button incase it was checked
  
                  holder.present_radio.setButtonDrawable(R.drawable.radio_background);
                  holder.present_radio.setChecked(false);
  
              }
  
          }});
  
  
      return rowView;
  
  }
  
  static class ViewHolder{
  
      int position;
      TextView label;
      RadioGroup presentAbsentRadio=null;
      RadioButton present_radio=null;
      RadioButton absent_radio=null;
  }
  }
  </code></pre>
  
  <p>I am not able to implement setonItemClickListner() and setOnCheckedChangeListner() at a time.</p>
  
  <p>Here is my Activity class:</p>
  
  <pre><code>public class AttendanceActivity extends ActionBarActivity implements OnClickListener, OnItemClickListener {
  
  LinearLayout listview;
  Expandableview EV = new Expandableview();
  public static Button chooseclass_btn, choosesection_btn, choosesubject_btn,submit;
  static ListView class_listview, section_listview, subject_listview, lv,datalstview;
  
  protected String text = "", classitemclicked,sectionitemclicked,subjectitemclicked,_class,_section;
  String StudentAttendanceInfo;
  
  
  ArrayList&lt;String&gt; studentName = null;// To store the Student name from listview
  ArrayList&lt;String&gt; RadioGrp=null;
  
  String[] class_output,section_output,subj_output, stud_data;
  
  ArrayAdapterActivity mlistadapter;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_attendance);        
  
      chooseclass_btn = (Button) findViewById(R.id.chooseclass_btn);
      choosesection_btn = (Button) findViewById(R.id.choosesection_btn);
      choosesubject_btn = (Button) findViewById(R.id.choosesubject_btn);
  
      listview = (LinearLayout) findViewById(R.id.listview_layout);
      class_listview = (ListView) findViewById(R.id.class_listview);
      section_listview = (ListView) findViewById(R.id.section_listview);
      subject_listview = (ListView) findViewById(R.id.subject_listview);
  
      submit=(Button)findViewById(R.id.submit);
  
      datalstview=(ListView) findViewById(android.R.id.list);
  
      //listview.setVisibility(View.GONE);
  
      //************************** onclick Event *****************************
      //*******************of Choose Class button*****************************//
  
      chooseclass_btn.setOnClickListener(this);
  
      submit.setOnClickListener(this);
  
      class_listview.setOnItemClickListener(this);
  
      section_listview.setOnItemClickListener(this);
  
      subject_listview.setOnItemClickListener(this);
  
      datalstview.setOnItemClickListener(this);
  
      datalstview.setOnScrollListener(new AbsListView.OnScrollListener() {
  
          @Override
          public void onScrollStateChanged(AbsListView view, int scrollState) {
              // TODO Auto-generated method stub
  
              int first = view.getFirstVisiblePosition();
              int count = view.getChildCount();
  
              Toast.makeText(getApplicationContext(), "Scroll State:: " + scrollState, Toast.LENGTH_SHORT).show();
              Toast.makeText(getApplicationContext(), "Cout of listview items:: " + view.getCount(), Toast.LENGTH_SHORT).show();
  
              if (scrollState == SCROLL_STATE_IDLE || (first + count &gt; view.getCount()) ) {
                  datalstview.invalidateViews();
  
              }
          }
  
          @Override
          public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
              // TODO Auto-generated method stub
  
          }
      });
  
  }
  
  @Override
  public void onItemClick(AdapterView&lt;?&gt; listadapter, View v,
          final int pos, long id) {
      // TODO Auto-generated method stub
  
      if(listadapter.getId()==R.id.class_listview){
  
          classitemclicked=(String)listadapter.getItemAtPosition(pos);        
          chooseclass_btn.setText(classitemclicked);
          class_listview.setVisibility(View.GONE);
  
          new GetDetails(getApplicationContext(), R.id.section_listview).execute();
  
      }
      else if(listadapter.getId()==R.id.section_listview){
  
          sectionitemclicked=(String)listadapter.getItemAtPosition(pos);
  
          choosesection_btn.setText(sectionitemclicked);
          section_listview.setVisibility(View.GONE);
  
          new GetDetails(getApplicationContext(), R.id.subject_listview).execute();
      }
  
      else if(listadapter.getId()==R.id.subject_listview){
  
          subjectitemclicked=(String)listadapter.getItemAtPosition(pos);
  
          choosesubject_btn.setText(subjectitemclicked);
          subject_listview.setVisibility(View.GONE);
  
          Toast.makeText(getApplicationContext(), "Subject id" + android.R.id.list, Toast.LENGTH_LONG).show();
  
          new GetDetails(android.R.id.list,classitemclicked,sectionitemclicked).execute();
      }
  
      else{
  
    //Here we have to do task to handle the listview items which are clicked                
    }
   }
  }
  </code></pre>