본문 바로가기
이과/JAVA 안드로이드

[안드로이드]CompoundButton 활용

by 코딩초밥 2021. 4. 25.
반응형

안녕하세요 ㅇㅅㅇ 코딩초밥입니다.

요번에는 어플에서 체크 리스트나 선택한 값을 가져오기 위한

compound button 들을을 만든후 그에 따른 활용에 관한 글을 써보겠습니다.

xml에서는 LinearLayout을 사용하였습니다.

xml쪽에서 아래에 같은 코드를 넣어주시면

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity"
    android:layout_margin="15dp">

    <CheckBox
        android:id="@+id/cb01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Apple"/>
    <CheckBox
        android:id="@+id/cb02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Banana"/>
    <CheckBox
        android:id="@+id/cb03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Orange"/>



    <ToggleButton
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOff="꺼짐"
        android:textOn="켜짐"/>

    <Switch
        android:id="@+id/sw"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sound"/>

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="result"
        android:textStyle="bold"
        android:textSize="30sp"
        android:textColor="#000000"/>


</LinearLayout>

위에코드를 사용을하면 옆에 보이는 checkbox 3개와

togglebutton 한개 switch 버튼까지 가져올수있습니다.

인제 이 버튼들을 눌러서 각 과일의 이름을

result칸에 띄워보도록하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* 이 글은 코딩 고수들이 보는 글이아닐꺼라 생각이 들어서 코딩 한줄한줄에 모두 설명을 달아놨습니다. 자 저는 주석요정이 되어서 코딩안에서 설명 해보겠습니다

 

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {

    //xml에서 만들 뷰들을 참조하는 참조변수를 먼저 만들어줍니다
    //onCreate 전에 이렇게 변수로 선언를 해주셔야하는데
    // 이렇게 해놔야 어디서든 자신이 사용한 코드안에서 어디서든사용가능합니다.

    private CheckBox cb01, cb02, cb03; //cd01,cd02등 이것은 제마음대로 쓸수있습니다!
     //무조건 이걸써야하는것이아닙니다. 자유롭지만 관련있는 작명을해봅시다.
    private TextView tv;
    private ToggleButton toggleButton;
    private Switch sw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // xml에서 같이 id를 만들었었죠? xml과 연결해봅시당 findviewById로
        // '이 변수는 xml에서 이것을 뜻하는것입니다~~' 하는 뜻이에용
        // id를 이용해서 뷰들을 찾아와서 참조변수에 대입!
        cb01= findViewById(R.id.cb01);
        cb02= findViewById(R.id.cb02);
        cb03= findViewById(R.id.cb03);
        tv= findViewById(R.id.tv);


        //체크박스의 체크상태가 변경되는 것을 듣는 리스너객체 생성. 코드쓰시다보면 자동완성 될겁니다! 길다고겁내지말기!
        CompoundButton.OnCheckedChangeListener changeListener= new CompoundButton.OnCheckedChangeListener() {
            //체크상태가 변경될 때 마다 실행되는 메소드
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                //저희가 썼던 과일 이름을 가져온다는 뜻입니다.
                String s=""; //문자열을 저장하는 String 변수값을 가져와 s안에 값을 저장해봅시다!
                if( cb01.isChecked()) s += cb01.getText().toString(); 
                if( cb02.isChecked()) s += cb02.getText().toString();
                if( cb03.isChecked()) s += cb03.getText().toString();
                //if는 만약에라는 뜻으로 만약 cd01이눌러졌다면! s에 값을 담아라!라는뜻이에요

                tv.setText(s); //담기만하면 안되겠죠? textview의 아이디 tv에 그 값을 담아줍니다.

            }
        };
        //위에 만든건 공용이라 생각하시고 위에서 만든 리스너객체를 각 체크박스에 붙이기!
        cb01.setOnCheckedChangeListener(changeListener);
        cb02.setOnCheckedChangeListener(changeListener);
        cb03.setOnCheckedChangeListener(changeListener);


        //토글버튼의 체크상태변경 리스너 생성 해봅시다 토글버튼은 on off를 나타내는 버튼말하는겁니다!
        toggleButton= findViewById(R.id.toggle); //아이디를 가져와야 xml이 연결이되겠죠?
        toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                tv.setText( isChecked + "" ); // 눌러서 끌것인가 킬것인가를 설정할수있는 Listener입니다
            }
        });



        //Switch에 체크상태변경 리스너 객체 생성 및 설정
        sw= findViewById(R.id.sw); //슬라이드 하는거있죠? 그거 말하는거에요 바로그거 on off
        sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                tv.setText( isChecked +""); //슬라이드해서 글을 넣을껏인가 뺄것인가하는 Listener입니다
            }
        });
    }
}

처음으로 android를 다루시는분들은 복사 붙이기말고 한번 써보시는걸 권장드려요

연습도 연습이지만..가끔 영어울렁증에 코드도 길어 보여서 거부감을 느끼시는분이 계셔서

자동완성으로 금방 완성되는 코딩과 놀아보시길바랍니다.

반응형

'이과 > JAVA 안드로이드' 카테고리의 다른 글

[안드로이드]ViewPaPer  (0) 2021.04.30
[안드로이드]UI/UX 디자인이란?  (0) 2021.04.27
[안드로이드]Thread2  (0) 2021.04.27
[안드로이드]Thread  (0) 2021.04.26
[안드로이드]Room  (1) 2021.04.25

댓글