2013-03-07 2 views
0

내가 선택한 Radiobutton의 ID를 가져야하는 상황에 처해 있습니다. 나는 문제가 어디 있는지 알고 있지만 해결할 수는 없다. 제발 내 코드의 기초를 제안 해주세요.사용자 정의 된 목록보기의 라디오 버튼 - 한 번만 선택해야합니다.

@Override 
public View getView(int position, View convertView, ViewGroup parent) {  
    ViewHolder holder=null; 

    bean=arrayListCountry.get(position); 

    LayoutInflater inflater=(LayoutInflater)context.getSystemService(Service.LAYOUT_INFLATER_SERVICE); 
    if(convertView==null) 
    { 
     convertView=inflater.inflate(R.layout.custom_layout_listview, null); 
     holder=new ViewHolder(); 
     holder.textCountryName=(TextView)convertView.findViewById(R.id.textView1); 
     holder.radioCountry=(RadioButton)convertView.findViewById(R.id.radioButton1); 
     RelativeLayout relativeLayout=(RelativeLayout)convertView.findViewById(R.id.relativeCustomLayout); 
     relativeLayout.addView(convertView); 
     convertView.setTag(holder); 
     convertView.setTag(R.id.textView1,holder.textCountryName); 


    } 
    else 
     holder=(ViewHolder)convertView.getTag(); 

    holder.radioCountry.setTag(position); 

    holder.textCountryName.setText(bean.getCountryName()); 
    holder.radioCountry.setChecked(bean.getIsSelected()); 

    holder.radioCountry.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 

      int pos=(Integer)buttonView.getTag(); 

      Country_Bean country_Bean=arrayListCountry.get(pos); 


      coubean.setIsSelected(buttonView.isChecked()); 


      //buttonView.setChecked(bean.getIsSelected()); 

      Toast.makeText(context, "POs:"+pos+"\ncountry:"+bean.getCountryName()+"\ncountry_check:"+bean.getIsSelected()+"\nbuttonCheck:"+buttonView.isChecked(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    return convertView; 
} 

특정 라디오 버튼을 어떻게 얻을 수 있는지 알려주십시오. 또한 왜 getView가 일반적으로 사용되는지, 어떻게 수동으로 그 메소드를 호출 할 수 있는지 알고 싶습니다. 미리 감사드립니다.

답변

0

RadioGroup을 사용해 보셨습니까? 많은 RadioButton에 대한 컨테이너입니다. 심지어 getCheckedRadioButtonId()이라는 메서드가 있습니다.


그 외, 타이핑 규칙을 따르지 않습니다. 나는 그것이 매우 엄격하고, 나는 내 안에있는 문법 - 나치 코드에 대해 사과한다.

bean이 멤버 변수 인 경우 mBean을 사용하십시오.

bean=arrayListCountry.get(position); 

은 다음과 같습니다

mBean=arrayListCountry.get(position); 

Country_Bean 클래스에 대한 적절한 이름이 아닙니다.

Country_Bean 

은 다음과 같습니다

CountryBean 

범위 변수 이름 country_Bean도 잘못된 것입니다.

country_Bean 

은 다음과 같습니다

countryBean 

또한 Eclipse를 사용하는 경우, 그것은 (CTRL + Shift 키 + F) 코드가 훨씬 더 예쁜 것으로 자동 형식을 사용하려고합니다.

+0

나는 listview와 함께 사용하지는 않았지만 하나의 radiobutton을 사용하고 있으므로 RadioGroup을 사용하면 단일 radiobutton이 필요한 위치가 좋지 않을 수 있습니다. 예, 쉬운 방법 일지 모르지만 더 많은 항목이 목록보기에 표시됩니다. 더 많은 radiogroup이 생성됩니다. radioGroup을 사용하면이 작업을 완료하는 마지막 수단이됩니다. 고맙습니다. – IamExpo

+0

다음 번에 나는 그것을 정말로 생각할 것이다. 당신의 제안에 감사드립니다. 고맙습니다. – IamExpo

+0

당신은 오신 것을 환영합니다, 당신은 효율적인 솔루션을 찾길 바래! :) –

1

enter image description here

나는 내 옆에서 수행과 기준에 대한 내 안드로이드 블로그에 전체 소스 코드를 게시했다. 이 블로그는 당신을 도울 것입니다

http://amitandroid.blogspot.in/2013/03/android-custon-single-choice-lsitview.html

희망.

감사합니다. 보내 주신 의견은 감사하겠습니다.

이 게시물이 귀하의 요구 사항을 충족하는 경우 제 대답을 수락하십시오.

+0

귀하의 게시물에 대해 Amit님께 감사드립니다. 그러나 나는 많은 도움없이 이러한 것들을 처리해야한다는 것이 더 중요하다고 생각합니다. 나는 노력했고 그 일을 끝냈다. 그래서 자습서가 필요 없어요. 미래에 내가 어딘가에 갇히게되면, 나는 그것을 사용할 것을 찾는다. 다시 한 번 Amit.우리는 확실히 연락 할 것입니다. – IamExpo

관련 문제