2013-12-17 2 views
2

У меня есть специальное диалоговое окно, в нем у меня есть listview и элемент spinner.The listview содержит textview и переключатель в каждой строке. Я могу выбрать только одну строку за раз с помощь радиокнопками. Это происходит. Проблема возникает, когда я выбираю элементы с прядильщиками, а затем я выбираю радиокнопку, предыдущий переключатель все еще выбран. Теперь, когда я выбираю элементы с прядильщиками, ранее выбранные радиокнопки должны быть сняты.Как установить radioobutton unchecked в классе адаптера

Примечание: моя вертушка в главном классе и кнопка радио в CustomAdapterClass, который я звоню в моем главном классе

Вот мой код: адаптер Класс:

public class APTRequestCustomAdapter extends BaseAdapter{ 

     Context context; 
    ArrayList<APTRequestCustomdetails> APTRequestCustomitems; 
    private static String display_aptstatus1=""; 
    public static String adapterbookingid=""; 
    private boolean userSelected = false; 
    public static RadioButton mCurrentlyCheckedRB; 
    String patientid1=""; 
    public static String from2=""; 
    public static String to2=""; 
    public static String testing2=""; 
    public static String cancelbookid=""; 
     public static String radiostring=""; 
     public static String troubleradiobutton=""; 
     private int selectedItemIndex=-1; 

     public APTRequestCustomAdapter(Context context, 
      ArrayList<APTRequestCustomdetails> aPTRequestCustomitems) { 
     super(); 
     this.context = context; 
     this.APTRequestCustomitems = aPTRequestCustomitems; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return APTRequestCustomitems.size(); 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return APTRequestCustomitems.get(arg0); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View v=convertView; 
     final int pos=position; 
     if(v==null){ 
      v = LayoutInflater.from(context).inflate(R.layout.backupcustomdailoguniversalappointment,null); 
     } 
      TextView patientname=(TextView)v.findViewById(R.id.txtpatientname); 
     TextView tag=(TextView)v.findViewById(R.id.txttype); 
     TextView phone=(TextView)v.findViewById(R.id.txtphone); 
     TextView age=(TextView)v.findViewById(R.id.txtage); 

     TextView Apptstatus=(TextView) v.findViewById(R.id.txtapptstatus); 
     TextView bookid=(TextView) v.findViewById(R.id.txtbookingid); 
     ImageView remove=(ImageView)v.findViewById(R.id.txtremove); 
    RadioButton radio=(RadioButton)v.findViewById(R.id.txtRadiobutton); 

    patientname.setPaintFlags(patientname.getPaintFlags() |Paint.UNDERLINE_TEXT_FLAG); 
     patientname.setText(APTRequestCustomitems.get(position).getPatient_Name()); 

     tag.setText(APTRequestCustomitems.get(position).getTag()); 
     phone.setText(APTRequestCustomitems.get(position).getPhone()); 
     age.setText(APTRequestCustomitems.get(position).getAge()); 
     Apptstatus.setText(APTRequestCustomitems.get(position).getAppointmentstatus()); 
     bookid.setText(APTRequestCustomitems.get(position).getBookingId()); 

     Apptstatus.setVisibility(View.INVISIBLE); 
     bookid.setVisibility(View.INVISIBLE); 

     //APT_CustomRequestResponse.radiostring=""; 
    // adapterbookingid=APTRequestCustomitems.get(pos).getBookingId().toString();// wrong code 
     patientname.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       System.out.println("Hello buddy"); 
       Intent io=new Intent(context, PatientSummaryActivity.class); 
       DoctorGlobal.patid=APTRequestCustomitems.get(pos).getPatient_ID(); 
       DoctorGlobal.patname=APTRequestCustomitems.get(pos).getPatient_Name(); 
       System.out.println("PATID"+DoctorGlobal.patid); 
       context.startActivity(io); 
      } 
     }); 
     if (position==getCount()-1 && userSelected==false) { 
     // radio.setChecked(true); 
      mCurrentlyCheckedRB = radio; 
     } else { 
      radio.setChecked(false); 
     } 
     if(APTRequestCustomitems.get(position).getAppointmentstatus().equals("1")){ 
      remove.setVisibility(View.INVISIBLE); 
      radio.setVisibility(View.INVISIBLE); 
      v.setBackgroundColor(Color.parseColor("#1569C7")); 


     }else 
     { 
      v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      remove.setVisibility(View.VISIBLE); 
      radio.setVisibility(View.VISIBLE); 

      radio.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        APTRequestCustomAdapter.radiostring="checkedtrue"; 

        if (mCurrentlyCheckedRB !=null) { 
         if (mCurrentlyCheckedRB ==null) 
           mCurrentlyCheckedRB = (RadioButton) v; 
         mCurrentlyCheckedRB.setChecked(true); 

         // Toast.makeText(context, ""+pos, Toast.LENGTH_LONG).show(); 
         adapterbookingid=APTRequestCustomitems.get(pos).getBookingId().toString(); 

        } 

        if (mCurrentlyCheckedRB == v) 
         return; 

        mCurrentlyCheckedRB.setChecked(false); 

        ((RadioButton) v).setChecked(true); 
        mCurrentlyCheckedRB = (RadioButton) v; 

       } 
      }); 

     } 




     return v; 
    } 





} 

И это код где я звоню класс адаптера: Этот метод находится в классе асинхронным на PostExecute() метод

public void showCustomDialog() { 
     // TODO Auto-generated method stub 
     final Dialog dialog = new Dialog(context); 

     List<String> list=new ArrayList<String>(); 
     list.add("Normal"); 
     list.add("Low"); 
     list.add("High"); 

     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.customdialoguniversalappointment); 
     ListView listcustomuniversalappt=(ListView) dialog.findViewById(R.id.listcustomuniversalappt); 

     LinearLayout layoutsubject=(LinearLayout) dialog.findViewById(R.id.layoutsubject); 
     LinearLayout layoutappt=(LinearLayout) dialog.findViewById(R.id.layoutappt); 
     spinnerappt=(Spinner)dialog.findViewById(R.id.permissionspinner); 

     ImageView cancel=(ImageView)dialog.findViewById(R.id.imgcancel); 
     Button cancelappt=(Button)dialog.findViewById(R.id.btncancelappt); 
     Button confirmappt=(Button)dialog.findViewById(R.id.btnconfirmappt); 
     EditText subject=(EditText) dialog.findViewById(R.id.edtsubject); 


     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, 
       android.R.layout.simple_spinner_item, list); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinnerappt.setAdapter(dataAdapter); 

      spinnerappt.setOnItemSelectedListener(new OnItemSelectedListener() { 

       @Override 
       public void onItemSelected(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        int index = arg0.getSelectedItemPosition(); 
       selected_item=arg0.getItemAtPosition(arg2).toString(); 
       APTRequestCustomAdapter.mCurrentlyCheckedRB.setChecked(false);//this line of code is not executing,the radio button remains checked in the view 
       if(APTRequestCustomAdapter.mCurrentlyCheckedRB.isChecked()){// this lines of codes are not executing even though the radio button is checked ,i don't know why 
        APTRequestCustomAdapter.mCurrentlyCheckedRB.setChecked(false);// And this line is also not executing 

       } 

       } 

       @Override 
       public void onNothingSelected(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 


       } 
      }); 


     APTRequestCustomAdapter adap=new APTRequestCustomAdapter(context,run_custom_universal_apptdata()); 
      listcustomuniversalappt.setAdapter(adap); 
      /*//runapptstatus_method(); 
      listcustomuniversalappt.setChoiceMode(1); 
      /

       dialog.show(); 

    } 

ответ

0

Попробуйте использовать свой пользовательский адаптер, как,

public class MyRadioAdapter extends BaseAdapter 
{ 
    private Context mContext; 
    private ArrayList<Variation> mVariations; 
    private int mSelectedVariation; 


    public MyRadioAdapter(Context context, ArrayList<Variation> variations, int selectedVariation) 
    { 
     mContext = context; 
     mVariations = variations; 
     mSelectedVariation = selectedVariation; 
    } 


    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) 
    { 
     View view = convertView; 
     if(view==null) 
     { 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.my_radio_adapter_item, null);   
     } 

     final Variation variation = mVariations.get(position); 

     TextView name = (TextView) view.findViewById(R.id.name); 
     RadioButton radio = (RadioButton) view.findViewById(R.id.radio); 

     name.setText(variation.getName()); 
     if(position==mSelectedVariation) radio.setChecked(true); 
     else radio.setChecked(false); 

     view.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       mSelectedVariation = position; 
       MyRadioAdapter.this.notifyDataSetChanged(); 
      } 
     }); 

     return view; 
    } 

here Радио кнопки обычно группируются по радио Group.When один RadioButton в выборе группы, все остальные автоматически отменяется.

+0

это не работает, я уже пробовал это – abh22ishek

+0

И у меня нет щелчка на виду, потому что у меня есть некоторые элементы в списке, и он имеет щелчок – abh22ishek

+0

может и сказать мне, почему этот код не работает, если (APTRequestCustomAdapter .mCurrentlyCheckedRB.isChecked()) { APTRequestCustomAdapter.mCurrentlyCheckedRB.setChecked (false); \t \t} – abh22ishek

Смежные вопросы