오늘 한일 문답 부분 UI작성 [Activity] class MainActivity : AppCompatActivity(), CategoryRecyclerListener{ private val categories: ArrayList by lazy { arrayListOf("경제", "소통", "가치관", "생활", "자녀", "가족", "부부관계", "건강", "결혼식", "미래", "현재", "과거" ) } private lateinit var categoryAdapter: CategoryAdapter private val binding: ActivityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) } override fun onC..
오늘 할 일! 금일 알아 볼 것은 ViewBinding 이닷!! 사실 금일 이 해당 포스를 쓰게 된 이유가 있다. ViewBinding을 사용하는 방법에 대해서는 다른 블로그나 카페 등에 자세히 나와있다. 그런데 갑자기 왜 어떻게 layout에 있는 xml를 가져오는 궁금해졌다. 물론 알아야되는 부분이지만 글쓴이는 급급하게 안드로이드를 공부했고 독학을 하다보니 쓰는 방법 위주로 공부했었다. 그러다보니 어느 정도 개념은 알지만 정확히 어떤 부분이 이렇게 된다고 말할 정도는 아니다.ㅠㅠ 이부분에 대해서는 많이 반성한다.(그래서 열심히 노력중!) 혹시 쓰는 방법을 알고 싶다면 다른 글을 찾아보기 바란다 좋은 블로그 등이 많다. 이번 포스트는 내가 자신이 알고 싶은 내용을 포스트하려고 한다. 자 시작해보자 Vi..
오늘 할 것 오늘은 알고리즘 문제 중 나누어 떨어지는 숫자 배열에 대해서 말하보려고 한다. 문제 Int형 배열안에 숫자 중에 divisor변수 나누었을 때 떨어지는 숫자를 구하면된다. 아래가 문제이다. 우리 위에 문제를 보고 몇가지를 생각해야된다.!!! 각각의 배열의 int값에 어떻게 접근할 것 인가? 일단 나누어 떨어지는 값을 어떻게 구해서 걸려줄것인가? 마지막으로 어떻게 정렬을 할 것인가? 일단 배열의 int값에 접근하는 가장 기초적인 방법은 우리가 잘아는 for문 등의 반복문을 돌려서 각각의 int값에 접근하는 것이다. 하지만 나는 조금 다른 함수를 사용할 것이다. 바로 filter 라는 함수를 이용할 것이다. 해당 함수를 이용하면 위에 생각해봐야 될 것 중 2가지가 해결된다. 바로 접근 방법과 어..
오늘 알아볼 것 저번 시간에 이어서 RoomDB에 대해서 조금 더 알아보려고 한다. Entiry '개체'인 entity는 관련이 있는 속성들이 모여 하나의 정보 단위를 말한다. 개체(Entity) 우리가 아는 객체(object)와는 비슷하지만 다른 의미가 있다. 객체는 정보와 동작, 기능 등을 가지고 있지만 개체는 정보 뿐다. 아래 코드는 생성 방법이다. @Entity(tableName = "UserTable") data class User ( var name: String, var age: String, var phone: String ){ @PrimaryKey(autoGenerate = true) var id: Int = 0 }다음과 같이 @Entity라는 어노테이션을 붙여준다. pri..
오늘 공부한 것 오늘은 RoomDB의 대해서 공부했다. RoomDB란 Room은 스마트폰 내장에 DB에 데이터를 저장하기 위해서 사용하는 라이브러리이다. 간단히 개발자로써 말하자면 스마트폰 전용 DB라고 보면되겠다. 보통 메모장 저장, 일정 저장, 웹툰 등의 각종 즐겨찾기 저장 등에 사용된다. 원래 과저에는 이역할을 SQLite가 했는데 여러 단점 때문에 Room으로 대체되었다. 위에 그림을 보면 단점들이 나온다. 내용적으로 이러쿵저러쿵 그냥 어려워서...그러니 바꾸었겠지 진짜 궁금한사람들은 찾아보길 바란다. Room 우리가 간단히 RooDB라고 부르는 이놈은 사실 SQLite를 활용해서 객체를 매핑해주는 요녁이다. 구글에서는 Room을 쓰기릴 권장한다. 구지 SQLite를 쓰겟다면 말리지 않겠다.(솔직..
오늘 한 일 databinding을 적용 databinding build.gradle(Module:app)추가 android{ //.. //.. dataBinding{ enable = true //추가 } } MainActivity에 binding 선언 class MainActivity : AppCompatActivity() { private val binding: ActivityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setConten..
오늘 알아볼것은 두 정수 사이의 합 두 정수 사이의 값을 모두 더한 값을 찾는 알고리즘이다. 이 문제를 풀기위해서는 간단히 몇가지만 생각해보면 된다. 바로 반복문이다. 우리는 반복문의 구조를 알고 있다 그렇다면 두 정수를 시작지점과 끝점으로 놓으면 된다. 그렇지만 여기는 함정이 있다. 바로 어떤 수가 큰 수 인지 알 수 있는가? 그러다 우리는 일단 두 정수 중 큰 수가 무엇인지 찾아야된다. 자 다음아래 코드는 정답코드이다. class Solution { fun solution(a: Int, b: Int): Long { var answer: Long = 0 var min = a var max = b var temp = 0 if(min>max){ temp = min min=max max = temp } fo..
오늘은 할 것 오늘은 간단하게 알고리즘 문제에 대해서 풀어보려고한다. 정수 내림차순으로 배치하기 문제는 주어진 정수를 내림 차순으로 바꿔서 Long타입으로 반환 해주면된다. 아래 문제 사진을 보자 일단 생각해보자 어떻게 하면 저 문제를 풀 수 있을까? 일단 생각 해야될 것은 반환 타입이 Long이라는 것이다. 하지만 내가 아는 선에서는 Long타입을 저렇게 그냥 바꿔주는 것은 없었던걸루 안다. (있으면 댓글 좀..주세용.... 좋은건 같이써야지!!) 그렇다면 중간에 어떤 과정을 거쳐서 만들고 나중에 Long타입으로 타입변화을 하는게 맞다고 생각했다.(저 중간이라는 것이 핵심이다.) 그래서 저 중간에 어떤 과정을 거치는게 맞을까라고 여러 생각을 해봤다. 가장 단순하게는 해당 Long 값을 하나씩 잘라서 f..
오늘 알아 볼것 저번 코루틴 포스트에 이어서 포스트하려고 한다. Coroutine 구조 코루틴은 크게 Coroutine Scope, Coroutine Context, Coroutinew Builder 이렇게 3가지로 나눌 수 있다. Coroutine Scope 코루틴의 동작하는 범위를 규정하고 스코프 내에서 실행되는 코루틴의 실행을 감시하거나 취소할 수 있다. Coroutine Scope: 인터페이스로 정의되며 특정한 dispatcher를 지정하여 동작이 실행될 스코프를 제한한다. Global Scope : Coroutine Scope의 한 종류로, 안드로이드에서 어플리케이션 라이프사이클을 따르며, 싱글톤으로 최상위 레벨에서 코루틴을 시작하기 때문에 필요할 때 만들어 쓰고 버리고 할 수 없다. 일반적으로..