From 3cdd311f03ea89ab0405ffeed617bcb3de26325c Mon Sep 17 00:00:00 2001 From: kkjsw17 Date: Sun, 20 Jun 2021 16:08:17 +0900 Subject: [PATCH] Search Article with Spinner (tags, title, content) --- .../koogle/Fragment/CommunityFragment.kt | 106 +++++++++++++----- .../main/res/layout/fragment_community.xml | 10 +- app/src/main/res/values/spinner.xml | 8 ++ 3 files changed, 91 insertions(+), 33 deletions(-) create mode 100644 app/src/main/res/values/spinner.xml diff --git a/app/src/main/java/kr/ac/konkuk/koogle/Fragment/CommunityFragment.kt b/app/src/main/java/kr/ac/konkuk/koogle/Fragment/CommunityFragment.kt index 32c13a8..95af30e 100644 --- a/app/src/main/java/kr/ac/konkuk/koogle/Fragment/CommunityFragment.kt +++ b/app/src/main/java/kr/ac/konkuk/koogle/Fragment/CommunityFragment.kt @@ -9,6 +9,8 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.ArrayAdapter import android.widget.Toast import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager @@ -22,7 +24,9 @@ import kr.ac.konkuk.koogle.Activity.ArticleActivity import kr.ac.konkuk.koogle.Activity.LogInActivity import kr.ac.konkuk.koogle.Adapter.CommunityAdapter import kr.ac.konkuk.koogle.DBKeys +import kr.ac.konkuk.koogle.DBKeys.Companion.ARTICLE_CONTENT import kr.ac.konkuk.koogle.DBKeys.Companion.ARTICLE_ID +import kr.ac.konkuk.koogle.DBKeys.Companion.ARTICLE_TITLE import kr.ac.konkuk.koogle.DBKeys.Companion.DB_ARTICLES import kr.ac.konkuk.koogle.DBKeys.Companion.DB_MAIN_TAGS import kr.ac.konkuk.koogle.DBKeys.Companion.DB_USERS @@ -145,6 +149,16 @@ class CommunityFragment : Fragment(R.layout.fragment_community) { } private fun initButton() { + val spinner = binding!!.searchSpinner + ArrayAdapter.createFromResource( + requireContext(), + R.array.search_spinner, + android.R.layout.simple_spinner_item + ).also { adapter -> + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + spinner.adapter = adapter + } + binding!!.btnAddArticle.setOnClickListener { context?.let { @@ -175,49 +189,87 @@ class CommunityFragment : Fragment(R.layout.fragment_community) { communityAdapter.notifyDataSetChanged() } - override fun onCancelled(error: DatabaseError) { - - } + override fun onCancelled(error: DatabaseError) {} }) } else { - searchedArticleList.clear() - articleRef.addListenerForSingleValueEvent(object : ValueEventListener { - override fun onDataChange(snapshot: DataSnapshot) { - for (article in snapshot.children) { - for (tag in article.child(DB_MAIN_TAGS).children) { - var isContain = false - if (searchText in tag.key.toString()) { - searchedArticleList.add( - 0, - article.getValue(ArticleModel::class.java)!! - ) - break - } - for (subtag in tag.child(SUB_TAGS).children) { - if (searchText in subtag.key.toString()) { + val position = binding!!.searchSpinner.selectedItemPosition + + if (position == 0) { + searchedArticleList.clear() + articleRef.addListenerForSingleValueEvent(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + for (article in snapshot.children) { + for (tag in article.child(DB_MAIN_TAGS).children) { + var isContain = false + if (searchText in tag.key.toString()) { searchedArticleList.add( 0, article.getValue(ArticleModel::class.java)!! ) - isContain = true + break + } + for (subtag in tag.child(SUB_TAGS).children) { + if (searchText in subtag.key.toString()) { + searchedArticleList.add( + 0, + article.getValue(ArticleModel::class.java)!! + ) + isContain = true + break + } + } + if (isContain) { break } } - if (isContain) { - break + } + communityAdapter.submitList(searchedArticleList) + communityAdapter.notifyDataSetChanged() + } + + override fun onCancelled(error: DatabaseError) {} + + }) + } else if (position == 1) { + searchedArticleList.clear() + articleRef.addListenerForSingleValueEvent(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + for (article in snapshot.children) { + if (searchText in article.child(ARTICLE_TITLE).value.toString()) { + searchedArticleList.add( + 0, + article.getValue(ArticleModel::class.java)!! + ) } } + communityAdapter.submitList(searchedArticleList) + communityAdapter.notifyDataSetChanged() } - communityAdapter.submitList(searchedArticleList) - communityAdapter.notifyDataSetChanged() - } - override fun onCancelled(error: DatabaseError) { + override fun onCancelled(error: DatabaseError) {} - } + }) + } else { + searchedArticleList.clear() + articleRef.addListenerForSingleValueEvent(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + for (article in snapshot.children) { + if (searchText in article.child(ARTICLE_CONTENT).value.toString()) { + searchedArticleList.add( + 0, + article.getValue(ArticleModel::class.java)!! + ) + } + } + communityAdapter.submitList(searchedArticleList) + communityAdapter.notifyDataSetChanged() + } - }) + override fun onCancelled(error: DatabaseError) {} + + }) + } } } } diff --git a/app/src/main/res/layout/fragment_community.xml b/app/src/main/res/layout/fragment_community.xml index 684a050..5af7d93 100644 --- a/app/src/main/res/layout/fragment_community.xml +++ b/app/src/main/res/layout/fragment_community.xml @@ -30,17 +30,15 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_gravity="center_vertical" - android:layout_weight="6" + android:layout_weight="4.7" android:hint="제목, 글 내용, 태그 등" android:inputType="textNoSuggestions"/> - + android:layout_weight="2.3" /> diff --git a/app/src/main/res/values/spinner.xml b/app/src/main/res/values/spinner.xml new file mode 100644 index 0000000..bcf69ac --- /dev/null +++ b/app/src/main/res/values/spinner.xml @@ -0,0 +1,8 @@ + + + + 태그명 + 제목 + 내용 + + \ No newline at end of file