[안드로이드 공부]/선플라워 디비보기 6

[Sunflower 디비보기] BindingAdapter로 View visible/gone

Data Binding으로 View와 직접 데이터를 연결 해 놓으면, 네트워크, DB, 다른 View의 변경 작업만으로 해당 뷰가 사라지고 나타나게 할 수 있다. 자동으로 작업이 되게 하려면 View 는 observe 작업을 통해 viewModel -Model 과의 연결을 해 놓아야 한다. 식물 리스트에서 나의 정원으로 담기를 해 놓은 것이 없다면, 리사이클러 뷰를 아예 보여주지 않는다. @BindingAdapter("isGone") fun bindIsGone(view: View, isGone: Boolean) { view.visibility = if (isGone) { View.GONE } else { View.VISIBLE } } Android AAC JetPack Sunflower 이 글은 코모가 ..

[Sunflower 디비보기] Detail View 에서 Garden 으로 아이템 담기 MVVM

2개의 탭이 있으며, 좌측에는 나의 정원, 우측에는 식물 리스트가 있다. 여러 종류의 식물들이 있는 식물 리스트에서 식물을 하나 선택하면 그 식물의 Detail View로 간다. DetailView에서 나의 정원으로 담기를 누를 경우 선택된 식물이 나의 정원에 담기는데, 이 일련의 과정(MVVM)들의 흐름을 알아본다. View layout 은 데이터 바인딩을 사용하고 viewModel을 통해 View를 업데이트하고, callback을 등록해서 add 버튼에 바로 동작하게 한다 frament_plant_detail.xml callback 은 아래 Fab버튼을 눌렀을 때 반응하도록 onClick 리스너에 등록해준다 View -담기 버튼의 동작을 위한 작업 ViewModel 생성(참고: ViewMode 주입)..

[Sunflower 디비보기] Activity, Fragment, Navigation 시작

Activity 최초 액티비티에서 activity_garden 을 layout으로 설정하게 되면 GardenActivity.kt class GardenActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(this, R.layout.activity_garden) } } NagGraph R.layout.activity_garden 에서는 이후 연결되는 view들을 아래와 같이 관리할 navigaion을 지정한다. app:navGraph="@navigation/nav_garden" R.layout.activity_garde..

[Sunflower 디비보기] 데이터 바인딩으로 ImageView 에 Glide

Data 바인딩과 BindingAdapter로 ImageView 에 네트워크를 통해 Image 가져와서 넣을 수 있다. 물론 Model 이 변경 되면, ViewModel 이 View에 바뀐 이미지 Url 을 LiveData 와 Observe를 통해 실시간 업데이트도 할 수 있다. Glide로 Db 에 저장되어있는 imageUrl을 load 하여 위 ImageView 로 넣어 준다. @BindingAdapter("imageFromUrl") fun bindImageFromUrl(view: ImageView, imageUrl: String?) { if (!imageUrl.isNullOrEmpty()) { Glide.with(view.context) .load(imageUrl) .transition(Drawab..

[Sunflower 디비보기] 데이터 바인딩과 HtmlCompat.fromhtml

TextView 에 Html 형식으로 글자를 바꿀 수 있다. 데이터 바인딩을 통해 바인딩 어뎁터(BindingAdapter)로 연결하면 간단하게 구현 할 수 있다. @BindingAdapter("renderHtml") fun bindRenderHtml(view: TextView, description: String?) { if (description != null) { view.text = HtmlCompat.fromHtml(description, FROM_HTML_MODE_COMPACT) view.movementMethod = LinkMovementMethod.getInstance() } else { view.text = "" } } 입력) plant.description = 동해물과 백두산이(from..

[Sunflower 디비보기] ViewModel 주입(초기화) 과정

요약 viewModel 주입(Injection) Repository 와 ViewModel 을 생성 해서 Factory 에 넣은 다음 by 로 위임된 viewModels 에 주면 viewModel 을 주입해준다.(ktx 로 ViewModelProvider.get()와 같은 역활을 한다.) 결국 viewModel (LiveData) > repository > dao > db 요렇게 연결 되어서 view 와 연결되어 작업이 될 것 이다. M-V-VM private val viewModel: GardenPlantingListViewModel by viewModels { InjectorUtils.provideGardenPlantingListViewModelFactory(requireContext()) } Fact..

반응형