2017-11-14 7 views
0

입니다 onCheckedChaneListener 변경지고위치는 내가 어댑터가 걸렸고 된 후에는 잘못된 결과 BT 각 행 [단일 선택]에 라디오 버튼을 가지고있다 CustomAdapter로리스트 뷰를 생성 한 내부 어댑터

if (arr_data.get(position).isdefaultCurrency()) holder.radio_currency.setChecked(true); 
    } else { 
     holder.radio_currency.setChecked(false); 
    } 
    holder.radio_currency.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 

       for (int k = 0; k < arr_data.size(); k++) { 
        if (k == position) { 
         arr_data.get(k).setIsdefaultCurrency(true); 
        } else { 
         arr_data.get(k).setIsdefaultCurrency(false); 
        } 
       } 
      } else { 
       arr_data.get(position).setIsdefaultCurrency(false); 
      } 
      notifyDataSetChanged(); 
     } 
    }); 
+0

앱을 실행할 때 어떤 일이 발생하며 그 결과는 원하는 것과 어떻게 다릅니 까? –

+0

위치 값 1 ** Iscurrencydefault() ** 값이 true입니다. 따라서이 조건에서 'if (k == position)'을 확인하면서 위치가 0을 반환합니다. 그게 내 문제 야. –

+0

** 완전한 ** 코드 예제를 제공 할 수 있습니까? 위에 주어진 코드가 포함 된 클래스와 메소드는 무엇입니까? –

답변

0

나는 당신이 이것을 필요 이상으로 복잡하게 만들고 있다고 생각합니다. 라디오 버튼 목록이있어 선택한 라디오 버튼을 알고 싶습니다. boolean 값 목록을 사용하는 대신 하나의 int을 선택한 위치와 함께 저장하면됩니다. 또는 문자 '$' 등의 기본 통화를 나타내는 데 더 의미있는 것을 저장하십시오.

+0

문제 (새 View.OnClickListener() {@Override (INT에서 K = 0 공개 무효 온 클릭 (뷰 V) { holder.radio_currency.setOnClickListener을 OnClickListener를 사용하는 대신 onCheckedChangeListener –

+0

것만으로 해결했다(); 케이 ++) { 경우 (K == 위치) { arr_data.get (K) (TRUE) .setIsdefaultCurrency; 한다} else { arr_data.get (K) .setIsdefaultCurrency()는 false }} notifyDataSetChanged(); } }); –

+0

@MegalaMani 나만의 답을 자유롭게 게시 해주십시오. 그런 다음 코드를 제대로 포맷 할 수 있습니다. –

0

OnCheckedChangeListener 대신 OnClickListener를 사용하여 간단하게 문제가 해결되었습니다.