와챠의 우당탕탕 코딩 일기장

[안드로이드] 파이어베이스에 데이터 저장, 검색 본문

코딩 일기장/Android(Kotlin)

[안드로이드] 파이어베이스에 데이터 저장, 검색

minWachya 2021. 5. 15. 18:21
반응형

아래와 같이 파이어베이스로 월별/온도별로 데이터들을 보려고 한다.

월별/온도별은 토글 버튼이다.

 

파이어베이스에 연결하는 과정은 생략.

 

파이어베이스 검색 부분만 따로 보자면 아래와 같다. 정확히 말하면

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

 

반응형
Comments