반응형 개발44 [Android] 리스트 업데이트를 위한 ListAdapter 들어가기 전에, 왜 ListAdapter를 사용하는지 알아봅시다. 일단 RecyclerView에서 일반적으로 아이템을 갱신하기 위해 notfiyItem 메서드를 많이 사용합니다. 하지만 이는 불필요한 아이템들도 일일이 갱신하기 때문에 불필요한 비용이 들어간다는 단점이 있습니다. 여기서 우리는 변경해야 하는 아이템들만 변경해주기 위해서 ListAdapter를 사용합니다. ListAdapter의 기원 DiffUtil ListAdapter를 알아보기 전에 기원이 되는 Util 클래스인 DiffUtil에 대해 알아봅시다. 이름에서 알 수 있듯이 차이와 관련된 클래스인 것 같다는 생각이 드실 겁니다. 맞습니다. 이 클래스는 다음과 같은 역할을 합니다. 두 데이터 셋을 받아서 그 차이를 계산해주는 클래스 DiffU.. 2022. 6. 7. [Android] LiveData에 대해 알아보자 앞선 글에서 ViewModel에서 알아보았습니다. 이제 우리는 ViewModel이 어떤 역할을 하는지 알고 있습니다. ViewModel을 통해 UI 관련 데이터를 관리해주고 View에 데이터를 그려줄 수 있다는 것을 압니다. 하지만 여기서 문제가 생깁니다. 한 번 그려진 View는 데이터가 변화했다고 일반적으로 다시 그려주지 않습니다. 그렇다고 Activity나 Fragment를 다시 그리기에는 불필요한 비용이 듭니다. 그렇다면 데이터의 변경에 따라 즉각적으로 View의 일부분만을 갱신해줄 수 있는 방법이 무엇이 있을까? 그래서 AAC에서 LiveData를 사용해서 해당 문제를 해결해줄 수 있습니다. (물론 현재는 StateFlow를 많이 사용하는 것 같습니다.) LiveData 정의 LiveData의 .. 2022. 5. 10. [Android] ViewModel Factory에 관하여 ViewModel을 생성할 때는 일반적으로 2가지 경우가 있습니다. ① 파라미터가 있는 경우 ② 파라미터가 없는 경우 일반적으로 파라미터가 없는 경우는 아래와 같이 사용해주면 됩니다. (lifecycle-extensions 모듈 필요) class SimpleViewModel : ViewModel(){ /** Content **/ } 생성하는 것은 2가지 방법으로 생성이 가능합니다. class MainActivity : AppCompatActivity() { private lateinit var simpleViewModel: SimpleViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState.. 2022. 5. 4. [Android] Intent와 Bundle 무엇이 다를까? (feat. 객체 전달) 흔히 Activity와 Fragment 간에 데이터를 전달할 때 우리는 Intent와 Bundle을 사용해서 데이터를 전달합니다. 하지만 두 개의 용도는 명확히 다릅니다. Intent는 저장이 아닌 전달하는 수단으로의 객체이고 Bundle은 상태/값 등을 저장하기 위한 객체입니다. Bundle은 Map의 형태로 되어있습니다. Intent에서 데이터를 전달할 때 다음과 같은 두 가지 코드를 보셨을 겁니다. val intent = Intent() intent.putExtra("key","value") val intent = Intent() val bundle =Bundle() bundle.putString("key","value") intent.putExtra("bundle",bundle) 위의 두 코드의 .. 2022. 4. 29. [Android] ACC ViewModel이란? - 정의, 사용법, 주의할점 AAC ViewModel이란? 우리는 안드로이드 앱을 설계할 때 MVVM 패턴을 많이 사용합니다. 오늘은 이 MVVM 패턴에서 빠질 수 없는 요소인 ViewModel을 쉽게 구현해주는 AAC의 ViewModel에 대해 알아보려고 합니다. AAC ViewModel을 사용하면 MVVM을 좀 더 쉽게 구현할 수 있습니다. (앞으로 나올 ViewModel은 AAC의 ViewModel을 의미) ViewModel은 액티비티와 프래그먼트에서 사용되는 UI 관련 데이터를 보관하고, 관리하기 위해 디자인되었습니다. 이전에 액티비티가 재생성될 때 데이터를 유지할 수 없었습니다. (예 : 화면 회전) 하지만 ViewModel은 액티비티가 재생성되는 상황에서도 ViewModel 인스턴스를 유지함으로써 데이터를 안전하게 다룰 .. 2022. 4. 16. [Android] 라이브러리 없이 ImageView에 URL 이미지 표시하기 일반적으로 안드로이드에서 URL로 이미지를 표시할 때 Glide라는 오픈소스 라이브러리를 많이 사용합니다. 이번에는 Glide를 사용하지 않고 URL 이미지를 표시해보려고 합니다. 일단 URL 이미지는 네트워크 통신을 통해 이미지를 다운로드하여 표시를 해야 하기 때문에 비동기 처리가 필요합니다. 비동기 처리를 위해 우리는 MainThread가 아닌 비동기 처리할 Thread를 만들어서 따로 처리를 해주어야 합니다. 이를 위해 Java에서 제공하는 라이브러리인 Executor를 사용했습니다. Executor는 네트워크 IO 통신, 디스크 IO 작업 등 백그라운드에서 작업을 위해 사용합니다. (지금은 Kotlin의 coroutine을 주로 사용합니다.) 그리고 Executor의 newSingleThreadE.. 2022. 4. 8. 이전 1 2 3 4 5 6 ··· 8 다음 반응형