2017-09-21 7 views
0

RadioButton과 함께 RecyclerView가 있습니다. 한 번에 RadioButton을 많이 선택하지 않고 코드를 잘 만들지 만 선택 사항을 위에서 아래로 반복하면 선택 사항이 사라집니다. 어떻게 해결할 수 있습니까? 감사합니다.RecyclerView android에서 하나의 RadioButton을 선택하는 방법은 무엇입니까?

enter image description here

private RadioButton lastCheckedRB = null; 

@Override 
public void onBindViewHolder(final MyViewHolder holder, int position) { 
    ContactUsModel contactUsModel = orderList.get(position); 
    holder.orderNum.setText(contactUsModel.getOrderNum()); 
    holder.orderCost.setText(contactUsModel.getOrderCost()); 

    holder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { 
      RadioButton checked_rb = (RadioButton) group.findViewById(checkedId); 

      if (lastCheckedRB != null &&lastCheckedRB.isChecked()) { 
       lastCheckedRB.setChecked(false); 
      } 
      //store the clicked radiobutton 
      lastCheckedRB = checked_rb; 


     } 
    }); 
당신의 orderList

전에서

답변

1

를 사용하여 하나 개의 임시 변수 : isSelected = false;

이이 모든 객체에 추가되어 있는지 확인하여 u는 어떤 라디오를 선택 arrayList

버튼 만 현재 위치 업데이트 orderListisSelected = true 및 나머지 isSelected = false;

notifyDataSetChanged() 또한

있는지 확인 확인하려는 전화

if(isSelcted) 
redioButton.setChecked(true); 
else 
redioButton.setChecked(false); 

예 : 경우 (csSelectedAddressPos == 위치) holder.radioBtn.setChecked (TRUE); else holder.radioBtn.setChecked (false);

 holder.radioBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //set object isChecked here 
       csSelectedAddressPos = position; 
       notifyDataSetChanged(); 
      } 
     }); 
-1

첫 번째 : 개별 라디오 버튼 ID를 가져옵니다. 둘째 : 개별 라디오 버튼에 클릭 수신기를 할당합니다. 모든 라디오 버튼에

{ 



radioButton1.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         radioButton1.setChecked(true); 
         radioButton2.setChecked(false); 
         radioButton3.setChecked(false); 
         radioButton4.setChecked(false); 
         radioButton5.setChecked(false); 
         radioButton6.setChecked(false); 
        } 
       }); 

// 유사 추가 청취자 :

radioButton2.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         radioButton2.setChecked(true); 
         radioButton1.setChecked(false); 
         radioButton3.setChecked(false); 
         radioButton4.setChecked(false); 
         radioButton5.setChecked(false); 
         radioButton6.setChecked(false); 
        } 
       }); 


} 
1

당신은, 사용의 RadioButton 난 그냥 체크하지 않고 쓰기로 할 수 그러나 이것이

는 6 개 라디오 버튼이 있다고 당신을위한 힌트 -

private CompoundButton lastCheckedRB = null; 

@Override 
public void onBindViewHolder(final MyViewHolder holder, int position) { 
    ContactUsModel contactUsModel = orderList.get(position); 
    holder.orderNum.setText(contactUsModel.getOrderNum()); 
    holder.orderCost.setText(contactUsModel.getOrderCost()); 
    holder.readioBtn.setOnCheckedChangeListener(ls); 
    holder.readioBtn.setTag(position); 
} 

private OnCheckedChangeListener ls = (new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, 
           boolean isChecked) { 
     int tag = (int) buttonView.getTag(); 
     ; 
     if (lastCheckedRB == null) { 
      lastCheckedRB = buttonView; 
     } else if (tag != (int) lastCheckedRB.getTag()) { 
      lastCheckedRB.setChecked(false); 
      lastCheckedRB = buttonView; 
     } 

    } 
}); 
+0

덕분에 그것은 많이 작동합니다 :) –

+0

만약 당신이 그것을 좋아한다면 :) –