페이지

2010년 10월 23일 토요일

안드로이드 CompoundButton.OnCheckedChangeListener 구현시

체크박스 구현 예제가 대부분 단일 체크박스에 대한 부분만 있어서
두개 이상의 체크박스를 구현할 때 리스너 처리를 아래와 같이 xml에서 체크박스에 tag를 지정하여 처리한다

@@ xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" android:orientation="vertical">
   <TableLayout android:id="@+id/TableLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TableRow>
   <TextView android:id="@+id/sound_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="220dip" android:text="@string/sound_msg"></TextView>
   <CheckBox android:id="@+id/sound_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/yes_msg" android:tag="77"></CheckBox>
  </TableRow>
  <TableRow>
   <TextView android:id="@+id/init_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/init_msg"></TextView>
   <CheckBox android:id="@+id/init_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/yes_msg" android:tag="33"></CheckBox>
  </TableRow>
 </TableLayout>
</LinearLayout>

@@java
public class checkBoxTest extends Activity implements CompoundButton.OnCheckedChangeListener {
    CheckBox initBox;
    CheckBox soundBox;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.option);
            
        initBox = (CheckBox)findViewById(R.id.init_check);
        initBox.setOnCheckedChangeListener(this);
    }
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
   
     String targetBtn = (String)buttonView.getTag();
   
     if(targetBtn.equals("33")){ // 초기화 박스 클릭 시

         if (isChecked) {
          //do something        
         }
     }else{ // 사운드 박스 클릭 시
            //do something
     }
    }

댓글 없음:

댓글 쓰기