diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index baa5d3db..611ae073 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,6 +20,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.YouDongKnowMe"
android:usesCleartextTraffic="true">
+
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/notice/NoticeFragment.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/notice/NoticeFragment.kt
index cfdfd6a8..59409277 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/notice/NoticeFragment.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/notice/NoticeFragment.kt
@@ -1,5 +1,7 @@
package com.dongyang.android.youdongknowme.ui.view.notice
+import android.content.Intent
+import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.dongyang.android.youdongknowme.R
@@ -7,6 +9,7 @@ import com.dongyang.android.youdongknowme.databinding.FragmentNoticeBinding
import com.dongyang.android.youdongknowme.standard.base.BaseFragment
import com.dongyang.android.youdongknowme.ui.adapter.NoticeAdapter
import com.dongyang.android.youdongknowme.ui.view.detail.DetailActivity
+import com.dongyang.android.youdongknowme.ui.view.search.SearchActivity
import com.dongyang.android.youdongknowme.ui.view.util.EventObserver
import com.google.android.material.tabs.TabLayout
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -28,6 +31,11 @@ class NoticeFragment : BaseFragment() {
}
setupTabLayout()
setupInfinityScroll()
+
+ binding.btnSearch.setOnClickListener {
+ val intent = Intent(requireContext(), SearchActivity::class.java)
+ startActivity(intent)
+ }
}
override fun initDataBinding() {
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/search/SearchFragment.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/search/SearchActivity.kt
similarity index 80%
rename from app/src/main/java/com/dongyang/android/youdongknowme/ui/view/search/SearchFragment.kt
rename to app/src/main/java/com/dongyang/android/youdongknowme/ui/view/search/SearchActivity.kt
index 3b2333e6..e8361bba 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/search/SearchFragment.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/search/SearchActivity.kt
@@ -6,12 +6,11 @@ import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
-import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.dongyang.android.youdongknowme.R
-import com.dongyang.android.youdongknowme.databinding.FragmentSearchBinding
-import com.dongyang.android.youdongknowme.standard.base.BaseFragment
+import com.dongyang.android.youdongknowme.databinding.ActivitySearchBinding
+import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.standard.util.dpToPx
import com.dongyang.android.youdongknowme.ui.adapter.NoticeAdapter
import com.dongyang.android.youdongknowme.ui.view.detail.DetailActivity
@@ -20,9 +19,9 @@ import com.dongyang.android.youdongknowme.ui.view.util.hideKeyboard
import com.dongyang.android.youdongknowme.ui.view.util.showKeyboard
import org.koin.androidx.viewmodel.ext.android.viewModel
-class SearchFragment : BaseFragment() {
+class SearchActivity : BaseActivity() {
- override val layoutResourceId: Int = R.layout.fragment_search
+ override val layoutResourceId: Int = R.layout.activity_search
override val viewModel: SearchViewModel by viewModel()
private lateinit var adapter: NoticeAdapter
@@ -40,12 +39,12 @@ class SearchFragment : BaseFragment() {
}
override fun initDataBinding() {
- viewModel.isLoading.observe(viewLifecycleOwner) {
+ viewModel.isLoading.observe(this) {
if (it) showLoading()
else dismissLoading()
}
- viewModel.searchNotices.observe(viewLifecycleOwner) { searchNotices ->
+ viewModel.searchNotices.observe(this) { searchNotices ->
if (searchNotices.isNotEmpty()) {
setupRecyclerViewMargin()
adapter.submitList(searchNotices)
@@ -56,15 +55,15 @@ class SearchFragment : BaseFragment() {
}
}
- viewModel.searchContent.observe(viewLifecycleOwner) { content ->
+ viewModel.searchContent.observe(this) { content ->
searchContent = content
}
- viewModel.errorState.observe(viewLifecycleOwner, EventObserver { resId ->
+ viewModel.errorState.observe(this, EventObserver { resId ->
showToast(getString(resId))
})
- viewModel.noSearchResult.observe(viewLifecycleOwner) { noSearchResult ->
+ viewModel.noSearchResult.observe(this) { noSearchResult ->
if (noSearchResult) {
binding.clSearchEmpty.visibility = View.VISIBLE
} else {
@@ -73,18 +72,20 @@ class SearchFragment : BaseFragment() {
}
}
- override fun initAfterBinding() = Unit
+ override fun initAfterBinding() {
+ binding.toolbarSearch.btnToolbarExit.setOnClickListener { finish() }
+ }
private fun setupRecyclerViewMargin() {
if (::adapter.isInitialized.not()) {
val marginDp = SEARCH_RESULT_RECYCLERVIEW_MARGIN_TOP_FOR_TOUCH
- val marginPx = marginDp.dpToPx(requireContext())
+ val marginPx = marginDp.dpToPx(this)
val layoutParams = binding.rvSearchResult.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.topMargin = marginPx
binding.rvSearchResult.layoutParams = layoutParams
} else {
val marginDp = SEARCH_RESULT_RECYCLERVIEW_MARGIN_TOP_DEFAULT
- val marginPx = marginDp.dpToPx(requireContext())
+ val marginPx = marginDp.dpToPx(this)
val layoutParams = binding.rvSearchResult.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.topMargin = marginPx
binding.rvSearchResult.layoutParams = layoutParams
@@ -94,8 +95,8 @@ class SearchFragment : BaseFragment() {
private fun setupRecyclerview() {
adapter = NoticeAdapter(onItemClick = { url -> navigateToDetail(url) })
binding.rvSearchResult.apply {
- this.adapter = this@SearchFragment.adapter
- layoutManager = LinearLayoutManager(requireActivity())
+ this.adapter = this@SearchActivity.adapter
+ layoutManager = LinearLayoutManager(this@SearchActivity)
itemAnimator = null
setHasFixedSize(true)
}
@@ -103,13 +104,13 @@ class SearchFragment : BaseFragment() {
private fun showKeyboardOnEditTextFocus() {
binding.etSearchBar.requestFocus()
- requireContext().showKeyboard(binding.etSearchBar)
+ showKeyboard(binding.etSearchBar)
}
@SuppressLint("ClickableViewAccessibility")
private fun setupHideKeyboardOnOutsideTouch() {
binding.root.setOnTouchListener { _, _ ->
- requireContext().hideKeyboard(binding.root)
+ hideKeyboard(binding.root)
false
}
}
@@ -127,7 +128,7 @@ class SearchFragment : BaseFragment() {
}
})
- viewModel.searchClearVisibility.observe(viewLifecycleOwner) { isValid ->
+ viewModel.searchClearVisibility.observe(this) { isValid ->
binding.ivSearchClear.visibility = if (isValid) View.VISIBLE else View.GONE
}
}
@@ -139,7 +140,7 @@ class SearchFragment : BaseFragment() {
}
private fun onSearchBtnClickListener() {
- binding.etSearchBar.setOnEditorActionListener { v, actionId, event ->
+ binding.etSearchBar.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
if (validateSearchContentLength()) {
viewModel.fetchSearchNotices()
@@ -148,7 +149,7 @@ class SearchFragment : BaseFragment() {
binding.etSearchBar.text.clear()
showToast(getString(R.string.search_minimum))
}
- requireContext().hideKeyboard(binding.root)
+ hideKeyboard(binding.root)
true
} else {
false
@@ -161,7 +162,7 @@ class SearchFragment : BaseFragment() {
}
private fun navigateToDetail(url: String) {
- val intent = DetailActivity.newIntent(requireContext(), url)
+ val intent = DetailActivity.newIntent(this, url)
startActivity(intent)
}
diff --git a/app/src/main/res/drawable/ic_menu_cafeteria.xml b/app/src/main/res/drawable/ic_menu_cafeteria.xml
index 83a329a3..7f3e4ae5 100644
--- a/app/src/main/res/drawable/ic_menu_cafeteria.xml
+++ b/app/src/main/res/drawable/ic_menu_cafeteria.xml
@@ -1,7 +1,9 @@
-
-
-
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_menu_calendar.xml b/app/src/main/res/drawable/ic_menu_calendar.xml
index 0d9fd27d..9b5d6590 100644
--- a/app/src/main/res/drawable/ic_menu_calendar.xml
+++ b/app/src/main/res/drawable/ic_menu_calendar.xml
@@ -1,5 +1,9 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_menu_home.xml b/app/src/main/res/drawable/ic_menu_home.xml
index 30fa06ac..bd3d62ca 100644
--- a/app/src/main/res/drawable/ic_menu_home.xml
+++ b/app/src/main/res/drawable/ic_menu_home.xml
@@ -1,9 +1,9 @@
diff --git a/app/src/main/res/drawable/ic_menu_search.xml b/app/src/main/res/drawable/ic_menu_search.xml
deleted file mode 100644
index 654a4ac9..00000000
--- a/app/src/main/res/drawable/ic_menu_search.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_menu_setting.xml b/app/src/main/res/drawable/ic_menu_setting.xml
index 28fc2db9..d87e0751 100644
--- a/app/src/main/res/drawable/ic_menu_setting.xml
+++ b/app/src/main/res/drawable/ic_menu_setting.xml
@@ -1,5 +1,9 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_search_button.xml b/app/src/main/res/drawable/ic_search_button.xml
new file mode 100644
index 00000000..c08529e4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_search_button.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/activity_search.xml
similarity index 90%
rename from app/src/main/res/layout/fragment_search.xml
rename to app/src/main/res/layout/activity_search.xml
index 2b2c9cec..3f3808ac 100644
--- a/app/src/main/res/layout/fragment_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -6,18 +6,28 @@
+ android:background="@color/white"
+ tools:context=".ui.view.search.SearchActivity">
+
+
+ app:layout_constraintTop_toBottomOf="@id/toolbar_search">
+ app:title="@{@string/cafeteria_title}"
+ app:titleLeft="@{true}" />
+
+
+ tools:listitem="@layout/item_notice" />
+ app:title="@{@string/schedule_title}"
+ app:titleLeft="@{true}" />
+ app:layout_constraintTop_toTopOf="@id/btn_toolbar_exit" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index 04b018d5..925b975b 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -4,10 +4,6 @@
android:id="@+id/noticeFragment"
android:icon="@drawable/ic_menu_home"
android:title="@string/menu_main_bottom_home" />
-
+ android:title="@string/menu_main_bottom_cafeteria"/>
+ tools:layout="@layout/activity_search" />
공지
일정
설정
- 검색
+ 식단
학과선택
@@ -132,6 +132,7 @@
오픈소스 라이센스
+ 검색
검색어를 입력하세요.
검색 결과를 찾을 수 없어요
다른 키워드로 검색해보세요.