투케이2K

497. (Android/Kotlin) [유틸 파일] radioSelectAlert : 콜백 (callback) 확인 라디오 버튼 아이템 선택 팝업창 호출 실시 본문

Android

497. (Android/Kotlin) [유틸 파일] radioSelectAlert : 콜백 (callback) 확인 라디오 버튼 아이템 선택 팝업창 호출 실시

투케이2K 2023. 2. 22. 04:41

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

        fun radioSelectAlert (mContext: Context, item: Array<String>, header: String, ok: String, no:String, myCallBack: (result: Int) -> Unit){

            // -----------------------------------------

            /* TODO [메소드 호출 방법]
            val array = arrayOf("twok", "투케이")
            C_Ui_View.radioSelectAlert(A_Intro@this, array, "알림", "확인", "취소") { result ->

            }
            // */

            // -----------------------------------------
            // [포지션 선택 변수 선언]
            var index = -1
            // -----------------------------------------

            // [로직 처리 실시]
            try {
                // -----------------------------------------
                // [타이틀 및 내용 표시]
                val Title = header
                // -----------------------------------------
                // [버튼 이름 정의]
                val buttonYes = ok
                val buttonNo = no
                // -----------------------------------------
                // [AlertDialog 팝업창 생성]
                Handler(Looper.getMainLooper()).postDelayed({ // TODO [핸들러 루퍼 사용 : UI 스레드]

                    AlertDialog.Builder(mContext)
                        .setTitle(Title) //[팝업창 타이틀 지정]
                        //.setIcon(R.drawable.app_icon) //[팝업창 아이콘 지정]
                        //.setMessage(Message) //[팝업창 내용 지정]
                        .setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
                        .setSingleChoiceItems(item, index){ dialog, which ->
                            // [인덱스 값 지정]
                            index = which
                        }
                        .setPositiveButton(buttonYes, DialogInterface.OnClickListener { dialog, which ->
                            // TODO Auto-generated method stub
                            // -----------------------------------------
                            // TODO [확인 버튼 클릭 이벤트 처리]
                            myCallBack.invoke(index)
                            // -----------------------------------------
                        })
                        .setNegativeButton(buttonNo, DialogInterface.OnClickListener { dialog, which ->
                            // TODO Auto-generated method stub
                            // -----------------------------------------
                            // TODO [취소 버튼 클릭 이벤트 처리]
                            myCallBack.invoke(index)
                            // -----------------------------------------
                        })
                        .show()

                },0)
                // -----------------------------------------
            }
            catch (e: Exception) {
                e.printStackTrace()
            }
        }
 

[결과 출력]

 

 
 
반응형
Comments