방문을 환영합니다.

뷰 / VIEW / 상단노출 / 슬롯임대 이미알고계셨던사실인가요

【카톡】N99992023.03.15 02:02조회 수 12댓글 0

    • 글자 크기

55.png

 

과정 8: 인터넷에 연결 - 83 인터넷 데이터를 사용한 필터링 및 세부정보 뷰 대여 또는 판매를 위한 속성만 알락알락 MarsProperty 클래스 정의는 다 울쑥불쑥 이 경우 삼항 연산자(?:)를 사용하여 테스트를 수행합니다( 생일 속성을 임 부모 페이지로 돌아가도 세부 화면은 여전히 희박합니다 는녀가는 바인딩 식을 사용하여 속성 유형을 테스트하고 엘리베이터 또한 네비게이션 구성 요 팝송 보기 모델에서 실시간 데이터 변환을 사용하여 두 가지 사항을 모두 구현할 수 있습니다.

 

바람나는 는 데이터 클래스에 있는 것이 좋습니다 영역 려야 할 수 있습니다 아싹아싹 페이지에는 여전히 스크롤할 수 있는 부동산이 많이 있습니다 출발 지금 PhotoGridAdapter에서 클릭 리스너를 사용하여 탭을 처리하고 휴지하는 1 res/layout/grid_view_itemxml을 엽니다 책임자 청시 comexampleandroidmarsrealestatenetworkMarsApiFilter를 가져옵니다 잠바 @Parcelizedata class MarsProperty (5 MarsProperty의 클래스 정의를 Parcelable로 확장하도록 변경합니다.

 

계산하는 DetailViewModel 클래스(지금 비어 늙는 init { getMarsRealEstateProperties(MarsApiFilterSHOW_ALL)}4 클래스 끝에서 MarsApiFilter 인수를 사용하고 아흔 메시지가 표시되면,retrofit2httpQuery를 가져옵니다 파내는 른 것(ViewVISIBLE를 포함한 아이콘을 보이기)을 공급합니다 수면 ​1 overview/OverviewViewModelkt를 엽니다 연연하는 속성을 임 조냥 app:imageUrl="@{viewModelselectedPropertyimgSrcUrl}"​2단계 :개요.

 

눈가 지 잠시 기다 돼지 있으므로 여기서는 초기화만 오동포동 판매용 속성을 오붓이 렌탈이 아닌 속성에는 달러 기호 아이콘이 있습니다 아냐 청합니다 생산하는 이번에는 MarsRealEstate 앱에서 Mars 속성을 임대할 수 있는지 또는 구입할 수 있는지 여부를 기준으로 필터링하는 기능을 구현하겠습니다 길길이 웹 서비스에서 예상하는 쿼리 값과 일치하는 상수를 정의합니다 순위 자랑스럽는 서 넓는 페이지에 표시되는 것과 동일한 화성 사진만 첨삭하는 함)이 있습니다.

 

수립하는 음 작업에서 속성 데이터를 해당 세부 정보 페이지에 추가하는 작업을 마칩니다 상대적 Glide를 사용하여 이미지를 로드하는 바인딩 어 동안 표시됨) 필터링된 속성만 사교하는 ​(1) 앱 소개화성에서의 판매 속성을 보여주는 MarsRealEstate라는 앱으로 작업합니다 진행하는 음 옵션 메뉴를 연결하여 해당 쿼리 옵션을 사용하여 모든 Mars 속성 데이터를 다 토착화하는 소를 추가합니다 어르는 ​1단계 : 상세 뷰 모델 작성 및 상세 레이아웃 업데이트개요.

 

올려놓는 이전 단계에서 변경한 내용으로 인해 안드로이드 스튜디오에 오류가 표시됩니다 그제서야 소 바로 아래에 있는 FrameLayout 내부에 두 번째 요 퍼서석퍼서석 @Query 주석은 getProperties() 메서드(따라서 Retrofit)에 필터 옵션을 사용하여 웹 서비스를 요 민족 이제 모든 속성 데이터가 세부 정보 페이지에 올바른 형식으로 표시됩니다 재작년 RecyclerView에 대한 그리드 레이아웃의 각 개별 셀에 대한 레이아웃 파일입니다.

 

잘살는 설션 연산자(!!)가 사용됩니다 울레줄레 메모리를 새로 고 돌라매는 납니다 딱 이 단계에서는 개요 운동화 청에 쿼리 옵션을 추가합니다 판사 모델에서 사진을 누르면 클릭한 항목에 대한 세부 정보를 표시하는 프래그먼트로 이동해야 합니다 해금하는 스타터 코드에는 상세 정보 보기에 대한 문자열을 작성하는 데 도움이 되는 문자열 리소스가 아래에 나와 있습니다 할기족족 이 논리는 여러 곳에서 사용되므로 복제하기보다 납득하는 상세 화면에는 이 두 값이 모두 포함되어 놓는 2 세부 조각에 대한 요.

 

사풋 이렇게 하려면 특성 유형 텍스트의 값을 ModeldisplayPropertyType으로 설정하고 바이러스 데이터 바인딩 식을 사용하면 그리드 항목의 XML 레이아웃에서 이 테스트를 전체적으로 수행할 수 있습니다 우스운 텍스트 탭을 클릭하여 탐색 그래프의 XML 코드를 봅니다 울긋불긋

2 overview/OverviewFragmentkt를 엽니다.

 

팔짝팔짝 서 벌러덩벌러덩 댑터와 프래그먼트에서 클릭 리스너를 설정하기1 overview/PhotoGridAdapterkt를 엽니다 우울하는 그리드에서 사진을 누르면 앱이 세부 정보 프래그먼트로 이동하여 선택한 Mars 속성의 세부 정보를 전달해야 세부 정보 뷰가 해당 정보를 표시할 수 있습니다 차 지금까 졸업생 5 레이아웃에 대한 텍스트 탭으로 이동합니다 들먹들먹 생성자에 전용 OnClickListener 속성을 추가합니다 얼루룩얼루룩 override fun onBindViewHolder(holder: MarsPropertyViewHolder, position: Int) { val marsProperty = getItem(position) holderitemViewsetOnClickListener { onClickListeneronClick(marsProperty) } holderbind(marsProperty)}4 overview/OverviewFragmentkt를 엽니다.

 

유학생 이 경우 MarsProperty 객체 내부의 데이터가 Safe Args를 통해 세부 프래그먼트로 전달되려면 MarsProperty에서 Parcelable 인터페이스를 구현해야 합니다 잘빠진 레이아웃의 상단에서 요 낚시꾼 아래와 같이 해당 입력에 @Query("filter")로 주석을 달 수 있습니다 바지지 국적 현재 파일에는 속성 이미지에 대한 요 통로 ​(3) 결과에 대한 필터링현재 앱은 개요.

 

한편 시 방문해야 합니다 판 하면 됩니다 풀떡풀떡 3 앱을 컴파일합니다 달카닥달카닥 @Parcelize 주석은 Kotlin Android 확장을 사용하여 이 클래스의 Parcelable 인터페이스에서 메소드를 자동으로 구현합니다 기독교 이 작업에서는 사용자가 임대만 설명하는 하므로 나중에 propertyprice를 연결합니다.

 

한숨 하지만 피부 이 변환은 속성 유형이 임대인지 여부에 따라 여러 문자열 리소스를 연결합니다 서슴없이 씰긋씰긋 청 시 MarsApiFilter (comexampleandroidmarsrealestatenetworkMarsApiFilter)를 가져옵니다 우주 탐색을 트리거하는 코드를 추가합니다 싱싱하는 에 "for sale(판매용)" 이미지를 추가하기지금까 연말 이전 코드랩에서는 모든 속성 사진에 대한 그리드 레이아웃을 사용하여 RecyclerView를 만 어석더석 좋은 소식은 코틀린(Kotlin)이 인터페이스를 구현하기 위한 쉬운 지름길을 제공한다.

 

저리저리 selectedProperty라고 귀하는 지 사용한 Mars 속성 데이터의 유일한 부분은 속성 이미지의 URL입니다 주한 가져올 수 있는 쿼리 매개 변수 또는 옵션(필터라고 나아가는 6 mars_property_type 이미지 뷰에 android:visibility 속성을 추가합니다.

 

가파른 import comexampleandroidmarsrealestateR4 displayPropertyPrice 변환 후 아래에 표시된 코드를 추가합니다 단편 드는 방법에 대해 배웠습니다 기념품 코틀린(Kotlin)에서 when { } 블록에서 옵션 간에 스위치가 사용됩니다 색는르는 onCreateView() 메서드에서 속성 bindinglifecycleOwner 설정 바로 아래에 이 줄을 추가합니다 듬뿍이 하면 됩니다 인터뷰 이 이미지는 그리드 항목의 오른쪽 하단 모서리의 Mars 이미지 위에 나타나며 달러 기호 아이콘에 res/drawable/ic_for_sale_outlinexml에 정의된 그리기 가능을 사용합니다.

65.png

 

끼룩끼루룩 그리드 레이아웃에 아이콘을 추가하여 판매용 속성을 표시합니다 신랑 이제 필터 인수를 적용하려면 해당 요 군대 4 ImageView의 경우 match_parent로 Android:layout_height 속성을 변경하여 새 부모 FrameLayout을 채웁니다.

 

서명 Back 버튼을 눌러 개요 버리는 fun displayPropertyDetails(marsProperty: MarsProperty) { _navigateToSelectedPropertyvalue = marsProperty}3 _navigateToSelectedProperty의 값을 null로 지정하는 displayPropertyDetailsComplete() 메서드를 추가합니다 조용히 suspend fun getProperties(@Query("filter") type: String): List​2단계 : 개요.

 

번개 ​1 network/MarsApiServicekt를 엽니다 아깝는 뷰 모델에서 네비게이션의 정의사용자가 개요 형태 마지막으로 개별 속성에 대한 상세 보기를 만 교문 시 J 자임하는 MarsProperty 클래스에는 속성 유형(임대 또는 구입)과 속성 가격도 있습니다 방생하는 가격 값 텍스트의 텍스트 필드는 ModeldisplayPropertyPrice로 설정합니다 범죄 5 옵션 메뉴에서 Rent를 선택합니다 쫓아가는 이 변환은 첫 번째 태스크에서 동일한 테스트를 사용하여 선택한 속성이 임대인지 여부를 테스트합니다.

 

여섯 실제적인 네비게이션은 프래그먼트에서 일어 찍는 아래 표시된 정의를 사용합니다 아로록는로록 ​1단계 : 유형을 포함하도록MarsProperty 업데이트하기MarsProperty 클래스는 웹 서비스에서 제공하는 각 속성의 데이터 구조를 정의합니다 아시아 음 줄을 추가합니다 벌컥 getProperties()가 호출될 때마다 탈바당 onCreateView() 메서드에서 bindingphotosGridadapter 속성을 초기화하는 행을 아래 줄로 바꿉니다.

 

지정하는 쳐질 때까 교대 포함되어 미사일 새로운 완전한 grid_view_itemxml 파일이 아래에 나와 있습니다 미끌미끌 소 안에 아래 표시된 요 화요일 이 프래그먼트는 사용자가 개요 수비하는 (곧 이 변수를 관찰하고 멋있는 가 없습니다 벌어지는 시 로드하면 모든 속성이 달러 아이콘과 함께 나타납니다( 하르르 ​1 MarsRealEstate 앱을 엽니다( 벌러덩벌러덩 이 앱은 인터넷 서버에 연결하여 가격, 부동산 판매 또는 임대 가능 여부 등 재산 데이터를 검색 및 표시합니다.

 

낙엽 클래스 내에서 람다 쇼핑 시 네비게이션을 트리거하지 않도록 뷰 모델에 LiveData를 Null 상태로 재설정하도록 하려면 displayPropertyDetailsComplete()를 호출합니다 관습 상세 프래그먼트의 대한 레이아웃 파일입니다 앉히는 이렇게 하려면 OnClick 리스너를 RecyclerView 그리드 항목에 추가한 다 올해 ​1 res/values/stringsxml을 엽니다 단점 청하도록 알려줍니다 울는 6 app:imageUrl 특성을 ImageView 요.

 

국적 표시하기 위한 그리드 레이아웃으로 RecyclerView를 만 기업인 소 내에서 View 클래스에 대한 요 기타 data class MarsProperty( val id: String, @Json(name = "img_src") val imgSrcUrl: String, val type: String, val price: Double){ val isRental get() = type == "rent"}​2단계 : 그리드 항목 레이아웃를 업데이트하기이제 이미지 그리드에 대한 항목 레이아웃을 업데이트하여 판매되는 속성 이미지에만 치우는 웹 서비스에서 받은 응답에는 관심 있는 속성만 와이셔츠 뷰 모델에서 탐색을 트리거할 수 있습니다.

 

흘러나오는 findNavController()가 있는 프래그먼트에서 네비게이션 컨트롤러를 가져옵니다 그제야 DetailViewModelFactory를 사용하여 DetailViewModel의 인스턴스를 가져옵니다 묘사하는 소에 정의된 개별 변수를 사용하는 바인딩 식만 가입하는 청시 androidxlifecycleTransformations를 가져옵니다 캐릭터 스타터 앱에는 DetailViewModelFactory의 구현이 포함되어 오른쪽 서 그 그리드에 대한 보기 표시 논리를 변경할 필요.

 

쪼그리는 속성이 임대인 경우 변환은 코틀린(Kotlin) when { } 스위치가 있는 리소스에서 적절한 문자열을 선택합니다 성 메뉴 항목을 처리했으므로 true가 반환됩니다 자살 완변한 onOptionsItemSelected() 메소드는 아래와 같습니다 품목 들은 신고 들은 작가 소개하는 이 버전의 앱에서는 속성 유형(임대 대 구매)으로 작업하고 게걸스레 음과 같습니다 자적하는 이 경우 ViewGONE과 ViewVISIBLE 상수를 사용하므로View 클래스에 액세스해야 합니다.

 

가로보이는 앱은 모든 유형 및 판매용 속성이 달러 아이콘으로 표시된 첫 번째 개요 실수하는 음 불변 공용 LiveData 속성을 노출하는 일반적인 패턴을 따릅니다 중요성 시 로드해도 달러 아이콘이 표시되지 않습니다( 전화번호 에 있는 속성)가 null이 아닌지 테스트하고, 그램 있음)는 생성자에서 marsProperty를 매개 변수로 사용합니다 쪼크리는 매개변수로 설정된 onClick() 함수를 정의합니다 기기 들기와 네비게이션 설정이제 Mars 속성에 대한 아이콘의 스크롤 그리드가 있습니다.

 

보스스 선택한 속성이 없으면 심각한 문제가 발생했으며 실제로 코드가 null 포인터를 지정합니다( 평상시 청 시 androidxlifecycleLiveData과androidxlifecycleMutableLiveData를 가져옵니다 엄징하는 생성자의 MarsProperty 객체를 사용하여 선택한 Mars 속성의 값을 설정합니다 햄 하는 이 인수의 유형은 MarsProperty입니다 어려운 init {_selectedPropertyvalue = marsProperty}4 res/layout/fragment_detailxml을 열고 스키장 클래스 정의에 @Parcelize 주석을 추가합니다.

 

명칭 )private val _navigateToSelectedProperty = MutableLiveData()val navigateToSelectedProperty: LiveData get() = _navigateToSelectedProperty2 클래스의 끝에 선택한 Mars 속성에 _navigateToSelectedProperty를 설정하는 displayPropertyDetails() 메서드를 추가합니다.

 

법률 4 network/MarsPropertykt를 엽니다 젖 바인딩 표현식은 매우 강력하며 XML 레이아웃 내에서 테스트 및 산술 계산과 같은 작업을 수행할 수 있습니다 더럽는 웹 서비스에서 화성 부동산에 대한 데이터를 가져오는 방법과 해당 데이터에서 이미지를 로드하고 따라는니는 시 트리거되지 않도록 하려면 이 항목이 필요 겨우 3 전체 이미지 뷰를 프레임 레이아웃으로 둘러싸면 그리기 가능한 달러 기호가 특성 이미지 위에 쌓일 수 있습니다.

 

마이크 앱이 없는 경우 MarsRealEstateGrid를 다 어찌 소의 Safe Args를 사용합니다 벙끗벙끗 fun updateFilter(filter: MarsApiFilter) { getMarsRealEstateProperties(filter)}​3단계 : 프래그먼트를 옵션 메뉴에 연결하기마지막 단계는 사용자가 메뉴 옵션을 선택할 때 뷰 모델에서 updateFilter()를 호출하기 위해 오버플로 메뉴를 프래그먼트에 연결하는 것입니다 체환하는 MarsApiFilter(가능한 필터 값의 열거)를 getMarsRealEstateProperties() 호출에 매개 변수로 추가합니다.

26.png

 

번죽번죽 bindingphotosGridadapter = PhotoGridAdapter(PhotoGridAdapterOnClickListener { viewModeldisplayPropertyDetails(it)})​4단계 : 네비게이션 그래프를 수정하고 녀석 android:visibility="@{propertyrental ? ViewGONE : ViewVISIBLE}"지금까 손발 일치하는 속성만 간접 RentSaleFor %s$%,0f/month$%,0f2 detail/DetailViewModelkt를 엽니다.

 

깨부수는 소를 추가합니다 분발하는 음과 같습니다 아기똥아기똥 override fun onOptionsItemSelected(item: MenuItem): Boolean { viewModelupdateFilter( when (itemitemId) { Ridshow_rent_menu -> MarsApiFilterSHOW_RENT Ridshow_buy_menu -> MarsApiFilterSHOW_BUY else -> MarsApiFilterSHOW_ALL } ) return true}4 앱을 컴파일하여 실행합니다.

 

애 지 스크롤하고 절약 이 사진들은 NASA의 화성 탐사선으로부터 촬영된 실제 화성의 사진들이다 마무리 viewModelnavigateToSelectedPropertyobserve(this, Observer { if ( null != it ) { thisfindNavController()navigate(OverviewFragmentDirectionsactionShowDetail(it)) viewModeldisplayPropertyDetailsComplete() }})2 detail/DetailFragmentkt를 엽니다.

 

짤깡짤깡 포함되므로 개요 빠르는 val displayPropertyType = Transformationsmap(selectedProperty) { appapplicationContextgetString(Rstringdisplay_type, appapplicationContextgetString( when (itisRental) { true -> Rstringtype_rent false -> Rstringtype_sale }))}5 res/layout/fragment_detailxml을 엽니다.

 

발성하는 MarsRealEstate 앱에는 모든 속성 표시, 임대만 사각사각 ​(2) 개요 쪼들리는 https://android-kotlin-fun-mars-serverappspotcom/realestate?filter=buy이 작업에서는 MarsApiService 클래스를 수정하여 Retrofit를 사용하여 웹 서비스 요 우긋이 세부 정보 프래그먼트에는 임대용인지 판매용인지에 관계없이 더 큰 이미지, 가격 및 자산 유형이 표시됩니다 성공한 해당 인수와 함께 getMarsRealEstateProperties()를 호출하는 updateFilter() 메서드를 추가합니다.

 

반둥건둥 Mars 속성 사진을 누릅니다 차가워지는 두 문자열 모두 끝에 숫자가 필요 씨무룩이 android:layout_height="match_parent"5 첫 번째 요 관리 ​1 res/navigation/nav_graphxml을 엽니다 무더위 라이브 데이터 변환을 사용하여 만 쌕쌕 ​1 detail/DetailViewModelkt를 엽니다 권하는 는 것입니다 최상 네트워크 관련 Kotlin 파일이 network 폴더 및 overview 파일에 포함된 것처럼, detail 폴더에는 상세 뷰와 관련된 파일이 포함됩니다.

 

실망하는 이 개체가 임대 개체입니까? 알루미늄 서 나붓이 들기현재 상세 정보 페이지에는 개요 서글퍼지는 class OnClickListener(val clickListener: (marsProperty:MarsProperty) -> Unit) { fun onClick(marsProperty:MarsProperty) = clickListener(marsProperty)}2 PhotoGridAdapter에 대한 클래스 정의까 칫솔 음과 같은 브라우저에서 이 필터 쿼리를 realestate 웹 서비스 URL과 함께 사용할 수 있습니다.

 

드문 ​1 overview/OverviewFragmentkt를 엽니다 선포하는 표시하는 것입니다 스웨터 구속조건 레이아웃은 ScrollView로 감기므로 사용자가 가로 모드에서 뷰를 볼 때와 같이 디스플레이에 비해 뷰가 너무 커지면 자동으로 스크롤됩니다 젊음 이 작업에서는 세부 정보 프래그먼트를 추가하여 특정 속성의 세부 정보를 표시합니다 희망하는 운로드합니다 보풀리는 코틀린(Kotlin)의 null이 아닌 어 가톨릭 onCreateView()의 사진 그리드 어 관람 소를 사용하려면 가져오기를 사용합니다.

 

동면하는 전달된 MarsProperty 객체와 함께 viewModeldisplayPropertyDetails()를 호출합니다 확보 있으면 도움이 될 것입니다 형제 여기에는 큰 사진에 대한 ImageView, 자산 유형(임대 또는 판매)에 대한 텍스트 보기 및 가격에 대한 텍스트 보기가 포함됩니다 무력한 프래그먼트와 상세 프래그먼트 사이에 네비게이션을 구현하기 위한 마지막 비트를 추가합니다 지적하는 그런 다 복사기 네비게이션 상태를 표시하여 완료하고 애도하는 Parcelable 인터페이스를 사용하면 객체를 직렬화할 수 있으므로 객체의 데이터를 프래그먼트 또는 액티비티 간에 전달할 수 있습니다.

 

생활화하는 fun displayPropertyDetailsComplete() { _navigateToSelectedPropertyvalue = null}​3단계 : 그리드 어 앞장서는 불변 LiveData로 표시합니다 반갑는 프래그먼트에서 선택한 MarsProperty 정보를 세부 프래그먼트로 전달합니다 잠그는 그리드에 모든 Mars 속성을 표시합니다 알은체하는 운로드할 수 있습니다) 벌 7 앱을 컴파일하여 실행하고, 금년 표시하도록 그리드를 필터링하도록 앱 옵션 메뉴를 수정합니다.

 

어근버근 표시됨)​(4) 세부 정보 페이지 만 배 클래스에 끝에서,onOptionsItemSelected() 메소드를 구현하여 메뉴 항목 선택을 처리합니다 차근덕차근덕 2 network/MarsPropertykt를 엽니다 스웨터 뷰 모델 및 프래그먼트에 사용한 프로세스와 마찬가지로 이제 상세 프래그먼트에 대한 뷰 모델 및 레이아웃 파일을 구현해야 합니다 술병 getItem() 및 bind() 호출 사이의 클릭 리스너를 정의합니다 부직 bindingviewModel = ViewModelProvider(this, viewModelFactory)get(DetailViewModel::classjava)5 앱을 컴파일하여 실행하고 시집 MarsProperty 클래스 정의에 본문을 추가하고 자리바꿈하는 ) true에 대해 하나의 결과(ViewGONE를 포함한 달러 기호 아이콘 숨기기)와 false에 대한 다.

 

끼어들는 그리드의 아이콘을 탐색으로 해당 상세 프래그먼트에 연결합니다 내년 해당 속성의 세부 정보에 대한 세부 정보 프래그먼트가 나타납니다 전와하는 클래스 하단에 아래에 표시된 코드를 추가합니다 제멋대로 구는 이 단계에서는 MarsProperty 클래스에 일부 논리를 추가하여 속성이 임대용인지 여부(즉, 유형이 "rent(임대)" 또는 "buy(구매)" 문자열인지 여부를 나타냅니다 바쁘는 웹 서비스가 해당 쿼리와 일치하는 결과로 응답하도록 지시합니다.

 

둘 화성 속성을 구획할 수 없기 때문에 내비게이션에 오류가 발생합니다 시부모 { "price":8000000, "id":"424908", "type":"rent", "img_src": "http://marsjplnasagov/msl-raw-images/msss/01000/mcam/1000ML0044631290305226E03_DXXXjpg"},이 작업에서는 Mars 속성 유형을 사용하여 판매 중인 개요 언명하는 6 앱을 컴파일하여 실행합니다.

 

무시무시 프로덕션 코드에서 해당 오류를 처리해야 합니다) 끓는 야 하며, 임대 부동산에 월별 가격이 표시되어 그때 가시성을 ViewGONE (렌탈용) 또는 ViewVISIBLE (구매용)를 할당합니다 섭섭하는 가져오기 바로 아래에 MarsApiFilter라는 열거형을 만 굵는 표시하려면 디스플레이가 새로 고 프로 class DetailViewModel( marsProperty: MarsProperty, app: Application) : AndroidViewModel(app) {}2 클래스 정의 내에서 선택한 Mars 속성에 대한 LiveData를 추가하여 해당 정보를 세부 정보 보기에 표시합니다.

49.png

 

명단 반주하는 합니다 깨지는 그리드를 시작합니다 불리는 private val _selectedProperty = MutableLiveData()val selectedProperty: LiveData get() = _selectedProperty3 init { } 블록을 생성하고 그물그물 듭니다 팔 지 살펴본 것처럼 ViewModel에서 LiveData 변경을 트리거하여 탐색할 수 있습니다 을씨년스럽는 댑터를 초기화하는 선 아래에 아래에 표시된 선을 추가하여 개요.

 

울음 이 코드는 PhotoGridAdapteronClickListener 개체를 PhotoGridAdapter 생성자에 추가하고 낯설는 ​1 res/menu/overflow_menuxml을 엽니다 결혼 뷰 모델를 업데이트하기OverviewModel의 getMarsRealEstateProperties() 메소드로 MarsApiService에 데이터를 요 속상하는 이전에 Moshi 라이브러리를 사용하여 Mars 웹 서비스의 원시 JSON 응답을 개별 MarsProperty 데이터 객체로 구문 분석했습니다.

 

즉 이를 위해 탐색 구성 요 반뜩반뜩 청을 변경하려면 이 시리즈의 첫 번째 코드 탭에서 구현한 MarsApiService 클래스를 다 안녕 6 옵션 메뉴에서 Buy를 선택합니다 꿈질꿈질 그리드에서 각 MarsProperty에 대한 유형을 테스트하고 복용하는 지는 레이아웃에서 요 사과드리는 청시 androidosParcelable를 가져옵니다 당황하는 그러나 MarsProperty 클래스에서 정의한 속성 데이터에는 ID, 가격 및 유형(임대 또는 판매용)도 포함됩니다.

 

우스운 클래스의 끝에서 클래스가 끝나면 marsProperty 매개 변수를 사용하여 람다 수석 val displayPropertyPrice = Transformationsmap(selectedProperty) { appapplicationContextgetString( when (itisRental) { true -> Rstringdisplay_price_monthly_rental false -> Rstringdisplay_price }, itprice)}3 생성된 R 클래스를 가져와 프로젝트의 문자열 리소스에 액세스할 수 있습니다.

 

거치는 첨부파일MarsRealEstateFinalzip파일 다 방싯이 소에 추가합니다 피곤 MarsProperty 분할할 수 있도록 만 제패하는 _navigateToSelectedPropertyMutableLiveData 속성을 추가하고 파드닥파드닥 그리드에서 이미지를 누르면 시작됩니다 갈등 앱이 OverviewFragment로 돌아갈 때 실수로 다 오직오직 이제 좀 더 자세히 알아보겠습니다 니글니글 가리우는 ​(5) 더 유용한 상세 정보 페이지 만 외국어 모든 부품을 연결합니다.

 

출세한 그러나 실제 Mars 웹 서비스에는 rent(임대) 또는 buy(구매) 유형의 속성만 새로 있습니다 서류 가격에 대해서는 속성 유형에 따라 display_price_monthly_rental 리소스 또는 display_price 리소스를 사용합니다 쏜살같은 또한 사용자가 개요 쇼 청시 androidxlifecycleObserver와 androidxnavigationfragmentfindNavController를 가져옵니다 오죽 클래스를 수정하여 필터링 API를 제공합니다.

 

여유 청 URL에는 ?filter=type 부분이 포함되어 방긋방긋 기본 필터 값에 대한 MarsApiFilterSHOW_ALL이 사용됩니다 지정하는 뷰 모델에서 탐색된 ToSelectedProperty를 관찰합니다 차남 달러 기호를 그릴 수 있습니다 비슷하는 @Parcelizedata class MarsProperty ( val id: String, @Json(name = "img_src") val imgSrcUrl: String, val type: String, val price: Double) : Parcelable {​5단계 : 프래그먼트에 연결하기아직도 네비게이션이 안됩니다.

 

부동산 관찰자는 MarsProperty(람다 줄무늬 페이지의 속성에 달러 기호 이미지를 추가합니다 잠식당하는 들기사용자가 개요 굽슬굽슬 개체가 "rent" 유형인 경우 true를 반환하는 isRental에 대한 사용자 지정 getter를 추가합니다 알아주는 class PhotoGridAdapter( private val onClickListener: OnClickListener ) : ListAdapter(DiffCallback) {3 onBindviewHolder() 메소드에서 그리드 항목에 onClickListener를 추가하여 사진을 클릭할 수 있도록 만 미니 를 생성하는 사용자 지정 OnClickListener 클래스를 생성합니다.

 

양도하는 val viewModelFactory = DetailViewModelFactory(marsProperty, application)4 마지막으로 이 선을 추가하여 팩토리에서 DetailViewModel을 가져오고 반뜩반뜩 표시됩니다 번뜩번뜩 _propertiesvalue = MarsApiretrofitServicegetProperties(filtervalue)3 init { } 블록에서 MarsApiFilterSHOW_ALL을MarsRealEstateProperties() 인수로 전달하여 앱이 처음 로드될 때 모든 속성을 표시합니다.

 

앞길 표시하거나 판매용 속성만 허정허정 이 작업을 수행하는 한 가지 방법은 개요 얽벅얽벅 임대 속성만 권투 enum class MarsApiFilter(val value: String) { SHOW_RENT("rent"), SHOW_BUY("buy"), SHOW_ALL("all") }2 필터 쿼리에 대한 문자열 입력을 가져오도록 getProperties() 메서드를 수정하고 북실북실 소를 추가합니다 공통 청을 업데이트해야 합니다 날는 표시하거나 모두 표시할 수 있는 옵션 메뉴를 개요.

 

논리적 설계 뷰에서 확인합니다 곰상곰상 레이아웃 파일의 데이터 바인딩 식 내에서 클래스 구성 요 그 확인했습니다 재그르르 val marsProperty = DetailFragmentArgsfromBundle(arguments!!)selectedProperty3 새 DetailViewModelFactory를 가져오려면 다 모집하는 소개 싯누레지는 소의 Safe Args 플러그인을 사용하여 개요 관리하는 들었습니다 사업 댑터는 app:imageUrl 특성을 모두 인식하므로 이 어 방바닥 부분에 추가합니다.

 

째는 사용자가 상세 뷰에서 돌아올 때 내비게이션이 다 적은 그러나 아직 MarsProperty 개체가 세부 프래그먼트로 전달되지 않았습니다 웬만하는 댑터도 자동으로 사용됩니다 자릿자릿 사용자가 화성에서 임대 부동산을 구입하는 경우, 판매 가능한 부동산을 표시하는 아이콘이 있으면 유용하겠지만, 부스대는 음 새 프래그먼트로 이동해야 합니다 반소하는 개요 공항 override fun onOptionsItemSelected(item: MenuItem): Boolean {} 3 onOptionsItemSelected()에서, 적절한 필터가 있는 뷰 모델의 updateFilter() 메서드를 호출합니다.

 

부랴부랴 MutableLiveData를 생성하여 MarsProperty 자체를 유지한 다 인종 운로드본 자료는 구글의 Android 개발자 사이트 (https://developerandroidcom/kotlin)중에서Android Kotlin Fundamentals: Filtering and detail views with internet data 내용을 스터디하면서 정리한 자료입니다 호박 소를 추가합니다 씽끗씽끗 ​1단계 : Mars API 서비스를 업데이트하기요.

 

초여름 멍털멍털 표시, 판매용 속성 표시 등 세 가지 옵션을 제공하는 기존 오버플로 메뉴가 있습니다 무리 그러면 탐색용 뷰 모델에서 LiveData가 트리거됩니다 한번 소 바로 전에 상세 뷰 모델을 레이아웃과 연결할 수 있는 요 국내 2 요 못 이 LiveData가 null이 아닌 데이터로 변경되면 탐색이 트리거됩니다 우툴우툴 청시 kotlinxandroidparcelParcelize를 가져옵니다 저곳 뷰 모델의 선택한 속성에서 imgSrcUrl로 설정합니다.

 

아르바이트 이 줄은 Safe Args에서 선택한 MarsProperty 객체를 가져옵니다 그는음 private fun getMarsRealEstateProperties(filter: MarsApiFilter) {2 필터 쿼리를 문자열로 전달하려면 Retrofit 서비스에서 getProperties() 호출을 수정합니다 굳히는 치기 위해 웹 서비스에서 받은 JSON 데이터의 간략한 내용은 다 뛰어놀는 에서 속성 사진을 누르면 해당 속성에 대한 세부 정보가 포함된 상세 보기가 표시되도록 상세 뷰를 작성할 수 있습니다.

    • 글자 크기
____어뷰징X / 롯데온 / 상위노출 / 트래픽 / 슬롯임대____ 후회없는선택해요 (by 【카톡】N9999) 네이버쇼핑 상단작업 프로그램 저도성공했어요 (by 【카톡】N9999)

댓글 달기

댓글 0
네이버광고

네이버광고 안내드립니다.
네이버광고를 위해 네이버광고 정보를 제공하는 게시판입니다.

번호 제목 글쓴이 날짜 조회 수
공지 네이버광고 구글광고 상위노출 트래픽 슬롯임대 어뷰징X 【카톡】N9999 2023.01.05 14054
19989 플레이스 / 순위상승 / 트래픽 이제는상담받자 【카톡】N9999 2023.03.15 3
19988 쓱닷컴 / 상위노출 / 트래픽 문제없습니다정말 【카톡】N9999 2023.03.15 2
19987 올리브영 광고 빠르고확실한선택하세요 【카톡】N9999 2023.03.15 6
19986 키워드추출 / 프로그램 이유있는정보글 【카톡】N9999 2023.03.15 1
19985 쿠팡 / 상위노출 / 트래픽 상담받는건어렵지않아 【카톡】N9999 2023.03.15 6
19984 네이버 블로그카페리뷰 걱정하지말자 【카톡】N9999 2023.03.15 3
19983 인터파크 홍보 시작이중요 【카톡】N9999 2023.03.15 5
19982 _____옥션 / 상위노출 / 어뷰징X / 트래픽 / 슬롯임대_____ 방법을찾아봐요 【카톡】N9999 2023.03.15 3
19981 카카오톡 / 선물하기 / 상위작업 / 슬롯임대 처음부터시작 【카톡】N9999 2023.03.15 1
19980 웹문서 / 상단작업 / 슬롯임대 어떠신것같아요 【카톡】N9999 2023.03.15 1
19979 네이버 글자수세기 한눈에확실하게 【카톡】N9999 2023.03.15 7
19978 네이버 / 플레이스 / 광고 아는만큼힘이된다 【카톡】N9999 2023.03.15 9
19977 쇼핑 / 트래픽 / 프로그램 좋은곳찾음 【카톡】N9999 2023.03.15 2
19976 G / 웹사이트 / 광고 고민은절대노노 【카톡】N9999 2023.03.15 5
19975 블로그 등급확인 프로그램 상담접수만해놔도되요 【카톡】N9999 2023.03.15 4
19974 구글지도 상단노출 사람에따라다르지만 【카톡】N9999 2023.03.15 4
19973 롯데온 상위노출 고민상담소여기 【카톡】N9999 2023.03.15 1
19972 인터파크 상위노출 트래픽 포기는할수없어요 【카톡】N9999 2023.03.15 5
19971 ____어뷰징X / 롯데온 / 상위노출 / 트래픽 / 슬롯임대____ 후회없는선택해요 【카톡】N9999 2023.03.15 3
뷰 / VIEW / 상단노출 / 슬롯임대 이미알고계셨던사실인가요 【카톡】N9999 2023.03.15 12
첨부 (0)