티스토리 뷰
FriendFragment -> DialogFriendAdapter
친구 이름을 검색하기 전에 친구 리스트가 모두 뜨고
검색을 시작하는 순간부터 검색어에 포함된 친구 이름의 리스트가 모두 뜨도록한다.
친구 이름은 공통 될 수 있으므로 중복될 수 있다.
검색 기능이 fragment_friend.xml에 있기 때문에 거의 모든 작업은 FriendFragment.kt에 이루어진다.
..
editText = binding.searchView // 검색어 변수로 받음.
editText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
// Optional: Add any functionality needed before text changes
}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
// Optional: Add any functionality needed during text changes
}
override fun afterTextChanged(editable: Editable) {
val searchText = editText.text.toString() //editable.toString()
searchList.clear()
if (searchText.isEmpty()) {
dialogFriendAdapter.setFriendList(originalList)
} else {
// 검색 단어를 포함하는지 확인
for (a in 0 until originalList.size) {
if (originalList[a].getName().toLowerCase().contains(searchText.toLowerCase())) {
searchList.add(originalList[a])
}
}
//dialogFriendAdapter.setFriendList(originalList)
dialogFriendAdapter.setFriendList(searchList)
}
}
})
//
// 리사이클러뷰, 어댑터 연결
val recyclerView: RecyclerView = binding.recyclerView
recyclerView.layoutManager = LinearLayoutManager(requireContext())
dialogFriendAdapter = DialogFriendAdapter()
recyclerView.adapter = dialogFriendAdapter
return binding.root
}
마지막 리사이클러뷰, 어댑터 연결에서 몇번의 오류가 발생했다.
오류는 dialogFriendAdapter = DialogFriendAdapter() 부분 이었는데, 그 이유는
DialogFriendAdapter() 매개변수로 originalList를 넣어 dialogFriendAdapter에 originalList를 넣어주고 싶었기 때문이다.
즉, dialogFriendAdapter = DialogFriendAdapter(originList) 코드를 적어 오류가 발생했다.
이때 originList는 친구 리스트에 들어가야할 데이터이다.
그렇다고 위 코드대로 dialogFriendAdapter = DialogFriendAdapter() 처럼
매개변수에 아무것도 넣어주지 않으면 2가지의 이상한 점이 발생한다.
첫 번째는 앱에 처음으로 접속할 때, 전체 친구 리스트가 뜨지 않는다는 점이다.
검색 시작 전에는 화면이 검색창밖에 보이지 않는다. 텅 비어있는 화면에 검색을 시작해야만 친구 리스트가 뜨기 시작한다.
두 번째 이상한 점은 이름이 하나인 데이터도 여러개가 뜬다는 점이다.
이름이 1p ~ 50p있다고 가정하자. 그럼 1을 검색어에 입력했을 때, 1p, 11p, 21p ... 와 같이 1이 포함된 모든 친구 리스트가 화면에 뜬다. 이건 정상적으로 뜬다.
하지만 1p라고 결과물이 1개만 나오도록 검색하면 1p의 리스트가 3개나 뜬다. 즉 오류다.
그래서 해결방법은 dialogFriendAdapter = DialogFriendAdapter() 이 안에 매개변수를 적어주면
오류가 발생하고 그렇다고 DialogFriendAdapter에 매개변수를 추가해 주는 것도 앞 코드에 영향을 주니 그냥 비워두었다.
이때 고민한건 DialogFriendAdapter에 어떻게 originList를 넣을 것인가였다.
dialogFriendAdapter.setFriendList(originalList)
결국 이 코드를 dialogFriendAdapter = DialogFriendAdapter() 아래에 적어주어 문제를 해결할 수 있었다.
모두 정상적으로 작동한다.
까먹고 구현안한건, searchButton이 있는데 이를 활용하지 않은거다 ㅡㅡ
다시 수정의 길로...
- Total
- Today
- Yesterday
- YOLO
- 사람수세기
- 10828번
- springboot
- randrange
- python공부
- konlpy
- 오븐시계
- streamlistener
- Kkma
- 에러발생
- baekjoon
- tweepy
- 터틀그래픽
- UnsupportedClassVersionError
- 터틀그래픽 명령어
- 백준
- 터틀그래픽예제
- yolov8
- 문제풀이
- 파이썬
- JAVA오류해결
- 사람검출
- randint
- Turtle Graphic
- database연결
- 다인승
- 다인승탑승
- SPRING오류해결
- gradleload오류
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |