<구현 화면>
1. DogMainActivity.java 내에서 액션바 기능 넣어주기
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_actionbar_search, menu);
MenuItem menuItem = menu.findItem(R.id.action_search);
searchView = (SearchView)menuItem.getActionView();
searchView.setQueryHint("사료명으로 검색합니다.");
searchView.setOnQueryTextListener(queryTextListener);
return super.onCreateOptionsMenu(menu);
}
이 때 자꾸 searchview cannot be cast to android.widget.searchView 라는 오류가 났는데
기존 액션바에 검색 기능을 추가할 때
androidx.appcompat.widget.SearchView 를 android.widget.SearchView 로 바꿔주니 해결됐다.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/menu_search"
android:title="Search"
android:orderInCategory="102"
app:showAsAction="always"
app:actionViewClass="android.widget.SearchView"/> <!--이 부분 수정-->
</menu>
2. 일단 리스트에 넣은 데이터를 따로 복사해두고 거기서 꺼내오는 방법을 사용
// 검색창에 글자를 입력했을 때 실행코드
private SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
DataList.clear();
if (s.length() == 0)
DataList.addAll(searchList);
else {
for (int i=0; i<searchList.size(); i++)
{
if(searchList.get(i).name.contains(s))
DataList.add(searchList.get(i));
}
}
adapter.notifyDataSetChanged();
return false;
}
@Override
public boolean onQueryTextChange(String s) {
DataList.clear();
if (s.length() == 0)
DataList.addAll(searchList);
else {
for (int i=0; i<searchList.size(); i++)
{
if(searchList.get(i).name.contains(s))
DataList.add(searchList.get(i));
}
}
adapter.notifyDataSetChanged();
return false;
}
};
'Android > UI-UX 디자인' 카테고리의 다른 글
[Android/Layout]DB 데이터를 Fragment 내 RecyclerView에 뿌리기(MS-SQL) (0) | 2021.05.08 |
---|---|
[Android/Layout]Fragment에서 버튼을 생성하여 버튼 클릭 시 Activity로 intent하기 (0) | 2021.05.08 |
[Android/Layout]BottomNavigationView와 ViewPager2를 이용한 화면 구축 (0) | 2021.05.08 |
[Android/Layout]ListView Click Event : 팝업창 생성 (0) | 2021.02.07 |
[Android/Layout]ListView 생성하기 (0) | 2021.02.03 |