SearchActivity.kt 3.85 KB
package com.example.vip

import android.content.Context
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
//import androidx.appcompat.widget.SearchView
import androidx.core.app.ComponentActivity.ExtraData
import androidx.core.content.ContextCompat.getSystemService
import android.icu.lang.UCharacter.GraphemeClusterBreak.T
import android.view.View
import android.content.Intent
import android.util.Log
import android.view.inputmethod.InputMethodManager
import android.widget.*
import androidx.core.content.ContextCompat
import com.google.firebase.database.*
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.search.*



data class MemoItem(
    val Target : String = "",
    val Policy : String = "",
    val Content : String = "",
    val Link : String = ""
)

var database = FirebaseDatabase.getInstance().reference

class SearchActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.search)

        val searchList = ArrayList<SearchItem>()
        val no_search : ImageView = findViewById(R.id.no_matching) // 노서치이미지

        val searchView: SearchView
        searchView = findViewById(R.id.searchForm)
        //searchView.onActionViewExpanded(); //new Added line
        searchView.setIconifiedByDefault(false)

        fun CloseKeyboard()
        {
            var view = this.currentFocus

            if(view != null)
            {
                val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
            }
        }

        searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
            override fun onQueryTextSubmit(query: String): Boolean {
                // 검색 버튼이 눌러졌을 때 이벤트 처리
                val layout : LinearLayout = findViewById(R.id.hashtag_linear)
                layout.setVisibility(View.GONE)

                CloseKeyboard()
                database.orderByChild("Policy").startAt("$query").endAt("$query"+"\uf8ff").addListenerForSingleValueEvent(object : ValueEventListener {
                    override fun onCancelled(p0: DatabaseError) {
                        Toast.makeText(this@SearchActivity, "실패부분 : $query", Toast.LENGTH_SHORT).show()
                    }
                    override fun onDataChange(dataSnapshot: DataSnapshot) {
                        if (dataSnapshot.exists() == false){ // 값 없을 때
                            policy_scroll_view.setVisibility(View.GONE)
                            no_search.setVisibility(View.VISIBLE)
                        }
                        else {
                            no_search.setVisibility(View.GONE)
                            policy_scroll_view.setVisibility(View.VISIBLE)
                        }

                        for (memoSnapshot in dataSnapshot.children){
                            val memo = memoSnapshot.getValue(MemoItem::class.java)

                            searchList.add(
                                SearchItem(
                                    ContextCompat.getDrawable(this@SearchActivity, R.drawable.image01)!!, memo!!.Policy
                                )
                            )
                        }
                        val adapter=SearchAdapter(searchList)
                        searchRecyclerView.adapter=adapter
                    }
                })
                searchList.clear()

                return true
            }



            override fun onQueryTextChange(newText: String): Boolean {
                // 검색어가 변경되었을 때 이벤트 처리
                return false
            }
        })
    }
}