- object 선언부분
object UserDataList {
var userDataList = mutableListOf<Map<String, String>>()
}
- 기존에 저장한 데이터에 key를 통해 접근하고 데이터 추가하기
// "name"의 값이 "sample"인 맵을 userDataList에서 찾음
val newMap = UserDataList.userDataList.firstOrNull { it["name"] == "sample" }
//"name"이 "sample"인 맵 찾고
if (newMap != null) {
//방금 찾은 맵을 수정 가능하게 바꾸고
val newMapMutable = newMap.toMutableMap()
//방금 바꾼 맵에 "key"라는 키와 "value"라는 값을 추가함
newMapMutable["key"] = "value"
//그 뒤에 원본 userDataList에서 찾은 맵을 수정한 맵으로 교체함
UserDataList.userDataList[UserDataList.userDataList.indexOf(newMap)] = newMapMutable
}
(아래는 슬랙에 보냈던 코드입니다)
object UserDataList {
var userDataList = mutableListOf<Map<String, String>>()
}
fun main() {
//예시 UserDataList.userDataList 1
val objUserInfo1: MutableMap<String, String> = mutableMapOf()
objUserInfo1["name"] = "newName"
objUserInfo1["id"] = "newId"
objUserInfo1["pw"] = "newPw"
objUserInfo1["email"] = "newEmail"
UserDataList.userDataList.add(objUserInfo1)
//예시 UserDataList.userDataList 2
val objUserInfo: MutableMap<String, String> = mutableMapOf()
objUserInfo["name"] = "sample"
objUserInfo["id"] = "newId"
objUserInfo["pw"] = "newPw"
objUserInfo["email"] = "newEmail"
UserDataList.userDataList.add(objUserInfo)
//예시 UserDataList.userDataList 3
val objUserInfo3: MutableMap<String, String> = mutableMapOf()
objUserInfo3["name"] = "newName"
objUserInfo3["id"] = "newId"
objUserInfo3["pw"] = "newPw"
objUserInfo3["email"] = "newEmail3"
UserDataList.userDataList.add(objUserInfo3)
// "name"의 값이 "sample"인 맵에 "key"라는 키로 "value"라는 값을 추가한 부분
val newMap = UserDataList.userDataList.firstOrNull { it["name"] == "sample" }
if (newMap != null) {
val newMapMutable = newMap.toMutableMap()
newMapMutable["key"] = "value"
UserDataList.userDataList[UserDataList.userDataList.indexOf(newMap)] = newMapMutable
}
// UserDataList 내용 확인하기 위한 출력부분
for (userInfo in UserDataList.userDataList) {
for ((key, value) in userInfo) {
println("$key: $value")
}
println()
}
}
- key로 value 받아와서 사용하기
val mapWithNameSample = UserDataList.userDataList.firstOrNull { it["name"] == "sample" }
if (mapWithNameSample != null) {
val idValue = mapWithNameSample["id"]
val pwValue = mapWithNameSample["pw"]
println("ID: $idValue, PW: $pwValue")
} else {
println("No user with the name 'sample' found.")
}
- intent로 받아온 경우
//intent로 "name"에 해당하는 value를 받아온 경우
val nameIntent = intent.getStringExtra("name")!!
val btn_click = findViewById<Button>(R.id.btn_change)
btn_click.setOnClickListener {
objSearch(nameIntent)
}
- 이미지 추가
fun objSearch(nameIntent: String) {
// (이전과 동일하게 진행) "name"의 값이 "sample"인 맵을 찾은 다음에
val targetMap = UserDataList.userDataList.firstOrNull { it["name"] == nameIntent }
//해당하는 맵을 찾았을 경우에 다른 키 값들을 가져와 변수에 저장하고
if (targetMap != null) {
val icon = targetMap["image"]?.toInt()
val id = targetMap["id"]
val pw = targetMap["pw"]
val email = targetMap["email"]
image.setImageResource(icon!!)
tv1.setText(id)
tv2.setText(pw)
tv3.setText(email)
} else { //여긴 못찾은경우
println("User with name 'sample' not found")
}
}
- 저장한 내용들 반복문으로 돌기 (방법 1)
UserDataList.userDataList.forEach { user ->
//user 로 하나씩 받아옴. for문 같은거
//받아온 user에서 키로 value 찾아 저장함
var objID = user["id"]
var objPW = user["pw"]
if (objID == idText) {
if (objPW == pwText) {
//받아온 아이디와 비번이 입력한것과 일치할경우 실행할 부분
Toast.makeText(this, getString(R.string.login_ok), Toast.LENGTH_SHORT).show()
} else {
}
} else {
}
}
- 저장한 내용들 반복문으로 돌기 (방법 2)
for (user in UserDataList.userDataList) {
var objID = user["id"]
var objPW = user["pw"]
if (objID == idText) {
if (objPW == pwText) {
Toast.makeText(this, getString(R.string.login_ok), Toast.LENGTH_SHORT).show()
} else {
// 비밀번호가 일치하지 않는 경우
}
} else {
// 아이디가 일치하지 않는 경우
}
}
'언어 > Kotlin' 카테고리의 다른 글
[Kotlin 문법] 문자열 다루기 (0) | 2024.03.15 |
---|---|
[Kotlin 공부] object와 싱글톤, object와 compaion (0) | 2024.03.15 |
[Kotlin 공부] 시간 출력, 비교하기 (0) | 2024.03.13 |
[Kotlin 문법 종합] 스레드 활용 실습 (@ 수정하기) (0) | 2024.03.08 |
[Kotlin 문법 종합] - 쓰레드, 코루틴 (# 추가하기) (0) | 2024.03.06 |