Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class CheckListLocationActivity : AppCompatActivity() {


binding.checklistspotLocationPlusBt.setOnClickListener {
if (selectedLocations.size < 5) {
if (selectedLocations.size < 10) {
val intent = Intent(this, LocationSearchActivity::class.java)
startForResult.launch(intent)
} else {
Expand Down Expand Up @@ -104,7 +104,7 @@ class CheckListLocationActivity : AppCompatActivity() {
}

private fun updateButtonStates() {
binding.checklistspotLocationPlusBt.isEnabled = selectedLocations.size < 5
binding.checklistspotLocationPlusBt.isEnabled = selectedLocations.size < 10
binding.checklistspotLocationFinishBt.isEnabled = selectedLocations.isNotEmpty()
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.example.spoteam_android.login

import LocationSearchAdapter
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
Expand All @@ -24,7 +27,7 @@ class LocationSearchActivity : AppCompatActivity() {
private lateinit var binding: ActivityLocationSearchBinding
private lateinit var locationSearchAdapter: LocationSearchAdapter
private val locationItemList = mutableListOf<LocationItem>()
private var searchTimer: Timer? = null // 디바운스 타이머
private var searchTimer: Timer? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -41,14 +44,14 @@ class LocationSearchActivity : AppCompatActivity() {
setupRecyclerView()
setupSearchFunctionality()

// TSV 데이터를 백그라운드에서 파싱
lifecycleScope.launch(Dispatchers.IO) {
val data = parseTsvDataFromAssets()
withContext(Dispatchers.Main) {
locationItemList.clear()
locationItemList.addAll(data)
locationSearchAdapter.notifyDataSetChanged()
binding.activityLocationRv.visibility = if (locationSearchAdapter.itemCount > 0) View.VISIBLE else View.GONE
binding.activityLocationRv.visibility =
if (locationSearchAdapter.itemCount > 0) View.VISIBLE else View.GONE
}
}
}
Expand All @@ -71,27 +74,40 @@ class LocationSearchActivity : AppCompatActivity() {
}

private fun setupSearchFunctionality() {
binding.activityLocationSearchEt.setOnTouchListener { v, event ->
binding.activityLocationSearchEt.setOnTouchListener { _, event ->
if (event.action == MotionEvent.ACTION_UP) {
val drawableEnd = binding.activityLocationSearchEt.compoundDrawables[2]
if (drawableEnd != null && event.rawX >= (binding.activityLocationSearchEt.right - drawableEnd.bounds.width())) {
if (drawableEnd != null &&
event.rawX >= (binding.activityLocationSearchEt.right - drawableEnd.bounds.width())
) {
performSearch()
hideKeyboard()
return@setOnTouchListener true
}
}
false
}

binding.activityLocationSearchEt.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch()
hideKeyboard()
true
} else {
false
}
}
binding.activityLocationSearchEt.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
// 디바운스: 일정 시간 지난 후 검색 실행
searchTimer?.cancel()
searchTimer = Timer().apply {
schedule(object : TimerTask() {
override fun run() {
runOnUiThread { performSearch() }
runOnUiThread {
performSearch()
}
}
}, 300) // 300ms 후에 검색
}, 300)
}
}

Expand All @@ -100,9 +116,6 @@ class LocationSearchActivity : AppCompatActivity() {
})
}

/**
* Assets에서 TSV 데이터를 읽어 리스트로 반환
*/
private suspend fun parseTsvDataFromAssets(): List<LocationItem> {
return withContext(Dispatchers.IO) {
val inputStream = assets.open("region_data_processed.tsv")
Expand All @@ -129,9 +142,6 @@ class LocationSearchActivity : AppCompatActivity() {
}
}

/**
* 현재 쿼리를 기준으로 데이터를 필터링
*/
private fun performSearch() {
val query = binding.activityLocationSearchEt.text.toString().trim()

Expand All @@ -149,8 +159,14 @@ class LocationSearchActivity : AppCompatActivity() {

withContext(Dispatchers.Main) {
locationSearchAdapter.updateList(filteredList)
binding.activityLocationRv.visibility = if (filteredList.isNotEmpty()) View.VISIBLE else View.GONE
binding.activityLocationRv.visibility =
if (filteredList.isNotEmpty()) View.VISIBLE else View.GONE
}
}
}

private fun hideKeyboard() {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(binding.activityLocationSearchEt.windowToken, 0)
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -43,26 +43,43 @@
android:id="@+id/checklist_bottom_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="13dp"
android:fontFamily="@font/suit_variable_font"
android:text="지역은 10개까지 설정 가능합니다."
android:textColor="@color/g400"
android:textFontWeight="600"
android:textSize="13.8dp"
android:layout_marginStart="20dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/checklist_tv" />

<com.google.android.material.chip.ChipGroup
android:id="@+id/chip_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<androidx.core.widget.NestedScrollView
android:id="@+id/chip_scroll_container"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="20dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="20dp"
app:chipSpacingVertical="8dp"
android:overScrollMode="ifContentScrolls"
android:fillViewport="true"
android:clipToPadding="false"
android:paddingBottom="16dp"
android:maxHeight="200dp"
app:layout_constraintTop_toBottomOf="@id/checklist_bottom_tv"
app:layout_constraintBottom_toTopOf="@id/button_layout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/checklist_bottom_tv" />
app:layout_constraintEnd_toEndOf="parent">

<com.google.android.material.chip.ChipGroup
android:id="@+id/chip_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:chipSpacingHorizontal="8dp"
app:chipSpacingVertical="8dp"
app:singleLine="false" />
</androidx.core.widget.NestedScrollView>



<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/activity_checklist_location_cl"
Expand All @@ -88,7 +105,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="11.52dp"
android:fontFamily="@font/suit_variable_font"
android:text="관심 지역을 하나 설정해주세요"
android:text="관심 지역을 하나 이상 설정해주세요"
android:textColor="@color/g500"
android:textFontWeight="600"
android:textSize="14.4dp"
Expand Down Expand Up @@ -135,7 +152,7 @@
android:fontFamily="@font/suit_bold"
android:stateListAnimator="@null"
android:text="추가"
android:textColor="@color/b500"
android:textColor="@drawable/button_textcolor"
android:textSize="17.28dp"
android:textStyle="bold" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@
android:drawableEnd="@drawable/location_search_resize"
android:hint="○○시, ○○구,○○동"
android:maxLines="1"
android:imeOptions="actionSearch"
android:inputType="text"
android:textSize="14.4dp"
android:fontFamily="@font/suit_variable"
android:textFontWeight="600"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
android:layout_marginTop="90.72dp"
android:fontFamily="@font/suit_bold"
android:lineSpacingExtra="8dp"
android:text="스팟에 활동할\n내 닉네임을 정해볼까요?"
android:text="스팟에서 활동할\n내 닉네임을 정해볼까요?"
android:textColor="@color/b500"
android:textSize="18dp"
app:layout_constraintStart_toStartOf="parent"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
android:layout_height="match_parent"
android:background="@color/white">

<!-- 앱 로고 -->
<ImageView
android:id="@+id/splash_logo_iv"
android:src="@mipmap/ic_launcher"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_marginTop="170dp"
android:src="@drawable/spot_homelogo"
android:src="@drawable/onboarding_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Expand Down
2 changes: 1 addition & 1 deletion SPOTeam_android/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<resources>
<string name="app_name">Spot</string>
<string name="app_name">스팟</string>
<string name="title_activity_interest_study">Interest_Study</string>
<string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string>
Expand Down