일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 오버로딩
- Overloading
- node.js
- 싱글 스레드
- adapter
- 자바
- javascript
- 배열
- 패널 교체
- as?
- ListView
- Kotlin
- Android
- 코틀린
- 안드로이드
- 자바스크립트
- 노트북 추천
- 파이썬
- 노트북
- go
- Python
- js
- 리스트 뷰
- Array
- var
- Java
- 함수
- 연산자
- golang
- HP
Archives
- Today
- Total
Bbaktaeho
[Android] Dialog 띄우기 (Kotlin, Alert, DatePicker, TimePicker 팝업창) 본문
개발 (Develop)/안드로이드 (Android)
[Android] Dialog 띄우기 (Kotlin, Alert, DatePicker, TimePicker 팝업창)
Bbaktaeho 2020. 10. 13. 16:04반응형
들어가며
안드로이드 기본 Dialog들 중 AlertDialog와 DatePickerDialog 그리고 TimePickerDialog를 사용해보겠습니다.
AlertDialog는 보통 경고창으로 사용됩니다.
확인과 취소를 통해서 작업을 수행하기 전에 한 번 더 경고하는 역할을 합니다.
DatePickerDialog는 날짜 정보를 받을 수 있는 팝업창입니다.
TimePickerDialog는 시간 정보를 받을 수 있는 팝업창 입니다.
구현은 ListView에서 아이템을 클릭했을 때 팝업창을 활성화하겠습니다.
프로젝트는 코틀린으로 생성하겠습니다. (생략)
리스트 뷰 만들기
activity_main.xml를 수정합니다.
아이템 뷰는 안드로이드 simple_list_item_1 뷰를 사용하겠습니다.
기능 구현하기
기본 어댑터인 ArrayAdapter 클래스를 사용하겠습니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val items = mutableListOf<String>()
items.add("Alert!")
items.add("DatePicker!")
items.add("TimePicker!")
items.add("네이버")
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
listView.adapter = adapter
}
}
더미 데이터(items)를 만들어주고 ArrayAdapter에 인자로 전달합니다.
다음은 아이템을 클릭했을 때 이벤트를 처리하는 코드를 작성하겠습니다.
listView.setOnItemClickListener { parent, view, position, id ->
val item = parent.getItemAtPosition(position)
Toast.makeText(this, item.toString(), Toast.LENGTH_SHORT).show()
}
아이템을 클릭하면 토스트에 문자열이 그대로 출력됩니다.
이제 Dialog를 띄우겠습니다.
추가로 Intent를 사용하여 웹 브라우저로 네이버 사이트를 띄워보겠습니다.
AndroidManifest.xml에서 Internet permission부터 허용해 줍니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val items = mutableListOf<String>()
items.add("Alert!")
items.add("DatePicker!")
items.add("TimePicker!")
items.add("네이버")
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
listView.adapter = adapter
listView.setOnItemClickListener { parent, view, position, id ->
val item = parent.getItemAtPosition(position)
when (item.toString()) {
"Alert!" -> showAlert()
"DatePicker!" -> showDatePicker()
"TimePicker!" -> showTimePicker()
"네이버" -> showWeb()
}
}
}
private fun showAlert() {
AlertDialog.Builder(this)
.setTitle("앱 종료")
.setPositiveButton("종료") { dialogInterface: DialogInterface, i: Int -> finish() }
.setNegativeButton("취소") { dialogInterface: DialogInterface, i: Int -> }
.show()
}
private fun showDatePicker() {
val cal = Calendar.getInstance()
DatePickerDialog(this, DatePickerDialog.OnDateSetListener { datePicker, y, m, d->
Toast.makeText(this, "$y-$m-$d", Toast.LENGTH_SHORT).show()
}, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE)).show()
}
private fun showTimePicker() {
val cal = Calendar.getInstance()
TimePickerDialog(this, TimePickerDialog.OnTimeSetListener { timePicker, h, m ->
Toast.makeText(this, "$h:$m", Toast.LENGTH_SHORT).show()
}, cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), true).show()
}
private fun showWeb() {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.naver.com")))
}
}
멤버 함수로 구현한 다음 리스너에서 실행되도록 구현했습니다.
실행
전체 화면이나 팝업으로 재생하면 보기 편합니다.
반응형