본문 바로가기

개발 노트/Kotlin

(102)
[Android/Kotlin] Multi View Type 리사이클러뷰 구현하기 일반적인 리사이클러뷰는 하나의 뷰형태만 보여주고 데이터만 달라지지만,리사이클러뷰 멀티뷰타입을 사용하면 다수의(다른) 뷰형태를 가지는 아이템을 보여줄 수 있다 이런식으로 멀티뷰타입을 통해서 구현하면 아이템들을 다르게 보여줄 수 있다     # xml먼저 해당 아이템에 들어갈 레이아웃을 각각 디자인해준다   # 상수정의enum class를 사용해서 방금만든 뷰타입의 상수를 정의해준다// enum class로 열거형 클래스로 만들기 (코드 단순, 가독성 up)enum class MultiViewEnum(val viewType : Int) { BlUE(0), LIGHTBLUE(1), ORANGE(2)}   # 데이터들어갈 데이터클래스를 작성..
[Android/Kotlin] Text에 밑줄 표시하기 다양한 방법이 있는데 가장쉬운 방법은 string파일에서 밑줄을 긋고자하는 문자열을 로 감싸주면 된다 매너온도 매너온도라는 문자열에 밑줄이 쳐져있는것을 확인할 수 있다 # 참고자료 https://devuryu.tistory.com/284 [Android] TextView draw Underline - 텍스트 밑줄 긋는 3가지 방법 TextView 에서 밑줄(Underline) 긋는 방법 3가지!!!! TextView 에서 밑줄을 긋기 위해서 검색을해서 (제가)알아낸 3가지 방법입니다. 1. strings.xml 에서 간단하게 HTML Tag 이용하는 방법 Java // strings.xml 작성 I c devuryu.tistory.com https://startuppark.tistory.com/entry..
[Android/Kotlin] 뒤로가기 버튼 클릭이벤트 구현 OnBackPressedCallback() 사용 이전에는 onBackPressed() 메소드를 사용하여 뒤로 가기 버튼이 눌렸을 때의 동작을 정의했지만, 최신 버전(targetSdk 33 : 안드로이드 13 이후)의 안드로이드에서는 onBackPressed()가 deprecated 되었다고 한다 대신에 OnBackPressedCallback 사용하여 뒤로 가기 버튼 동작을 정의할 수 있다. OnBackPressedCallback은 OnBackPressedDispatcher를 통해 등록되고, 뒤로 가기 버튼을 누를 때마다 실행된다. addCallback 메소드는 OnBackPressedDispatcher 에 새로운 OnBackPressedCallback 을 등록하고, 이렇게 등록된 콜백은 handleOnBackPressed 메소드에서 정의된 작업을 수행..
[Android/Kotlin] 천단위로 콤마 표시하기 (DecimalFormat) 1) 숫자 천단위 콤마 DecimalFormat을 사용해서 #,###으로 3자리마다 콤마가 찍히도록 설정해주었다 format 괄호 안에는 적용시킬 데이터를 넣어주면된다 DecimalFormat("#,###").format(123456) // 123,456 2) 숫자 천단위 콤마, 소숫점 00으로 고정 DecimalFormat("#,###.00").format(123456) // 123,456.00 3) 숫자 천단위 콤마, 소숫점 두자리까지만 표시 DecimalFormat("#,###.##").format(123456.1234) // 123,456.12 # 참고자료 https://skogkatt.tistory.com/entry/Kotlin-%EC%BD%94%ED%8B%80%EB%A6%B0-DecimalFo..
[Android/Kotlin] ImageView scaleType 속성 # scaleType = "Center" 이미지의 크기와 비율을 유지하며 이미지의 중앙을 ImageView의 중심에 맞춤 # scaleType = "centerCrop" 이미지의 비율을 유지하며 가로, 세로 중 짧은 쪽을 ImageView에 꽉차게 출력 # scaleType = "centerInside" 이미지의 가로, 세로 중 긴쪽을 imageView의 레이아웃에 맞춰 출력한다. 이미지의 비율을 유지하되며 남은 공간은 background 색으로 채워진다. fitCenter와 달리 이미지가 ImageView보다 작을 경우 크기가 유지됨 # scaleType = "fitCenter" 이미지의 크기가 ImageView보다 작다면 ImageView의 크기에 따라 달라짐 # scaleType = "fitXY" ..
[Android / Kotlin] Intent로 Class 값 넘기기 (Serializable, Parcelable, Parcelize) 일반적으로 intent를 사용해서 넘겨주면 데이터를 하나하나씩 넘겨줘야되기때문에 코드가 길어지고 효율성도 안좋다 그래서 보통 데이터를 클래스형태로 만들어서, 그 클래스를 한방에 넘겨주는 직렬화 방식을 사용한다! 코틀린에서 직렬화를 통해 값을 전달하는 방법은 Serializable, Parcelable, Parcelize 이렇게 3가지가 있다 # Serializable data class Product( val id : Int, @DrawableRes val image : Int, val name : String, val area : String, val price : Int, val comment : Int, var favorate : Int, val description : String, val sel..
[Android/Kotlin] Fragment간 데이터통신(데이터전달) Fragment간 데이터 전달하는 방법에 대한 기본적인 개념과 간단한 예제는 아래 블로그에다가 정리를 해뒀었다 https://coding-juuwon2.tistory.com/256 [Android] Fragment간 데이터통신 방식 1. FragmentManager에 Bundle로 Data를 담아 전달 //PassBundleFragment는 본인이 전달하고자 하는 Fragment class val bundle = Bundle() bundle.putString("key", "value") val passBundleBFragment = PassBundleBFragment() passBundleBFragment.argumen coding-juuwon2.tistory.com 이번에는 예제를 통해 직접 코드를 짜..
[Android / Kotlin] Recyclerview에 구분선 표시 리사이클러뷰에 구분선을 표시하고싶다면 아래와같이 DividerItemDecoration을 사용해서 작성해주면된다 // 리사이클러뷰 구분선 표시 with(binding.RecyclerView){ val decoration = DividerItemDecoration( context, LinearLayoutManager(this@MainActivity).orientation ) addItemDecoration(decoration) } 리사이클러뷰 아이템마다 구분선이 잘 표시되고 마지막 아이템에는 구분선이 표시가 안되는것을 확인할 수 있다 # 참고자료 https://odomm.tistory.com/entry/Kotlin-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Recyc..
[Android/Kotlin] 어댑터 콜백을 위한 Lambda 함수 전달 # 어댑터 클릭리스너를 람다로 표현하기 어댑터에서 파라미터에 private val onClick : (Flower) -> Unit 이렇게 작성해준다 Unit은 반환 유형을 지정하지 않는 경우 기본적으로 Unit이 되고, 코틀린에서 값을 반환하지 않음을 의미한다 그리고 viewHolder에서 init을 사용해서 아이템 클릭리스너를 설정해준다 [invoke는 마치 함수인 것처럼 호출할 수 있도록 한다. (Flower) -> Unit를 호출하는 데 사용된다] // 클릭 이벤트(onClick) class FlowersAdapter(var flowerList : List, private val onClick : (Flower) -> Unit) : RecyclerView.Adapter() { // 화면(레이아웃) ..
[Android/Kotlin] Activity, Fragment간 데이터 주고받기 일단 아래와같이 MainActivity에 버튼 두개를 만들고, Frag1버튼을 누르면 FirstFragment로 이동, Frag2버튼 누르면 SecondFragment로 이동하도록 코드는 미리 짜놨고 여기서는 데이터를 전송하고 받는 부분만 작성해볼것이다 # Activity -> Fragment 데이터 전달 newInsatance함수를 따로 만들어서 하는방법과 그냥 Bundle을 사용하여 데이터를 전달하는 방법 2가지를 사용해서 해볼것이다 기본적으로 저 버튼들이 MainActivtiy에 있는 버튼들이므로, 저 버튼을 클릭했을때 Fragment로 값을 전달하고, Fragment에서는 값을 받아와서 text로 뿌려주는 작업을 해볼것이다 1) newInsatance함수를 따로 만들어서 하는방법 # Activit..