상세 컨텐츠

본문 제목

[안드로이드]다이얼로그(Dialog) 체크박스(CheckBox)로 보여주기

안드로이드

by aries574 2021. 1. 6. 15:28

본문


2021/01/05 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 리스트(List)로 보여주는 방법


이번 시간에는 다이얼로그박스 내용을 체크박스 형태로 보여주는 예제를 만들어 보겠습니다. 


1. 메인화면 구현(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
>

<Button
android:id="@+id/btn_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="다이얼로그"/>

</RelativeLayout>


2. 리스트 데이터 만들기(res-> values -> string.xml)

<resources>
<string name="app_name">Dialog</string>

<string-array name="colors">
<item>Red</item>
<item>Blue</item>
<item>Green</item>
</string-array>
</resources>

3.메인코드 구현(MainActivity.java)

다이얼로그(Dialog)에서 체크박스를 사용하려면

setMultiChoiceItems 메소드를 이용하면 됩니다.


import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity{

Button btn_dialog;

List<String> mSelectedItems;

AlertDialog.Builder builder;

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

btn_dialog = findViewById(R.id.btn_dialog);

btn_dialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
}

public void showDialog(){

mSelectedItems = new ArrayList<>();

builder = new AlertDialog.Builder(MainActivity.this);

builder.setTitle("색상을 선택하세요");

//클릭이벤트
builder.setMultiChoiceItems(R.array.colors, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {

//데이터 리스트 담기
String[] items = getResources().getStringArray(R.array.colors);

//선택된 아이템 담기
if(isChecked){
mSelectedItems.add(items[which]);

}else if(mSelectedItems.contains(items[which])){
mSelectedItems.remove(items[which]);
}
}
});

//OK이벤트
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

String final_selection = "";

for(String item : mSelectedItems){
final_selection = final_selection + "\n " + item;
}

Toast.makeText(getApplicationContext(), "선택된 아이템은" + final_selection , Toast.LENGTH_SHORT).show();
}
});

//취소 이벤트
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});

AlertDialog alertDialog = builder.create();
alertDialog.show();
}
}


4. 실행화면


반응형

관련글 더보기

댓글 영역