와챠의 우당탕탕 코딩 일기장
[안드로이드] 파이어베이스에 데이터 저장, 검색 본문
반응형
아래와 같이 파이어베이스로 월별/온도별로 데이터들을 보려고 한다.
월별/온도별은 토글 버튼이다.
파이어베이스에 연결하는 과정은 생략.
파이어베이스 검색 부분만 따로 보자면 아래와 같다. 정확히 말하면
if (map[option] != searchWord) continue
이부분!!!
원하는 단어와 같지 않으면 데이터를 추가하지 않는 방법으로 검색을 구현했다.
==이나 .eqauls를 사용하지 않고
.contains함수를 이용해서 해당 단어가 포함되어있는지 아닌지 검색하는 방법도 있다.
// 월별/온도별 검색하여 해당 결과만 보이기
fun search(dataSanpshot : DataSnapshot, searchWord : String, option : String) {
// memo에서 쭉 내려옴
val collectionIterator = dataSanpshot.children.iterator()
// memo가 있다 == 사용자가 작성한 Memo가 존재한다
if (collectionIterator.hasNext()) {
// 예전 아이템 지우기
memoAdapter.items.clear()
// 모든 한줄평 읽어오기
val memos = collectionIterator.next()
val itemsIterator = memos.children.iterator()
while (itemsIterator.hasNext()) {
// 매 반복마다 itemsIterator가 가리키는 아이템 가져오기
val currentItem = itemsIterator.next()
// 해시맵 형태로 읽어오기(저장도 해시맵 형태로 해야하니까)
val map = currentItem.value as HashMap<String, String>
// 해당 내용이 아니면 제외
if (map[option] != searchWord) continue
// 데이터 변수로 만들기
val objectId = map["objectId"].toString()
val date = map["date"].toString()
val temp = map["temp"].toString()
val top = map["top"].toString()
val bottom = map["bottom"].toString()
val outer = map["outer"].toString()
val memo = map["memo"].toString()
val month = map["month"].toString()
val tempGroup = map["tempGroup"].toString()
// 리사이클러뷰에 연결
memoAdapter.items.add(Memo(objectId, date, temp, top, bottom, outer, memo, month, tempGroup))
}
// 데이터 바뀌었다고 알려주기
memoAdapter.notifyDataSetChanged()
}
}
}
activity_main.xml
activity_memo.xml
memo.xml
values폴더 안에
arrayMonth.xml
values폴더 안에
arrayTempGroup.xml
Memo.kt
MamoAdapter.kt
MemoActivity.kt
MainActivity.kt
반응형
'코딩 일기장 > Android(Kotlin)' 카테고리의 다른 글
[안드로이드] 구글맵 api (2) (가장 최근 위치 가져오기, 현재 위치 요청하기) (0) | 2021.05.21 |
---|---|
[안드로이드] 구글맵 api (1) (0) | 2021.05.21 |
[안드로이드] 스플래시 만들기 (0) | 2021.05.15 |
[안드로이드] 하단 메뉴(BottomNavigationView) (0) | 2021.05.14 |
[안드로이드] 웹 크롤링(이미지) (2) | 2021.05.14 |
Comments