마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

custom dialog 라디오 버튼 질문좀요..

0 추천

BaseAdapter를 사용해서 getView 메소드안에서 

public View getView(final int position, View convertView, ViewGroup parent) { 
holder = null;
        DialogItem rowItem = (DialogItem)getItem(position);
        LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.dialog, null);
            holder = new ViewHolder();
            holder.radioBtn = (RadioButton) convertView.findViewById(R.id.rb);
            holder.img = (ImageView) convertView.findViewById(R.id.img);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

       
        if (position == 1 && userSelected == false) {
         mCurrentlyCheckedRB = holder.radioBtn;
            //holder.radioBtn.setChecked(true);
         mCurrentlyCheckedRB.setChecked(true);
        } else {
            holder.radioBtn.setChecked(false);
        }
            
        
        holder.radioBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (mCurrentlyCheckedRB == null) {
                    return;
                }

                if (mCurrentlyCheckedRB == v)
                    return;

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

        holder.img.setImageResource(list.get(position).resID);

        return convertView;
}

 

 
이런식으로 처리 하고 있는데요.
다른 버튼을 눌렀을 때처음 선택한 라디오 버튼이 그대로 남아있는
문제가 있습니다......
분명 코드에서 onClick메서드안에 제대로 구현된거 같은데 처음 설정한게 남아있는
이유가 뭘까요..ㅠㅠ
익명사용자 님이 2014년 5월 27일 질문

2개의 답변

0 추천
혹시 라디오 그룹으로 묶으셨나요?
YeonMin (17,860 포인트) 님이 2014년 5월 28일 답변
0 추천

userSelected를 true로 지정하는 부분이 없네요.

그리고 userSelected를 true로 하더라도 

holder.radioBtn.setChecked(false);

위 구문을 타게되어 리스트 스크롤시 클릭된 라디어 버튼도 체크 해제되겠네요.

holder의 radio버튼과 mCurrentlyCheckedRB를 비교하는 구분도 있어야 되겠네요.

코딩인헬 (12,150 포인트) 님이 2014년 5월 28일 답변
...