상세 컨텐츠

본문 제목

[안드로이드] 동물 리스트(ListView) 검색(SearchView) 기능 추가 방법

안드로이드

by aries574 2021. 12. 25. 16:25

본문


2021.12.24 - [안드로이드] - [안드로이드] ListView 동물 리스트 만드는 방법

 

[안드로이드] ListView 동물 리스트 만드는 방법

이번 시간에는 ListView를 통해 동물 리스트를 만들어 보겠습니다. 1. 동물 클래스 만들기 Animal.java  java -> 프로젝트명 클릭 -> 마우스 오른쪽 -> New -> Java Class Name -> Animal -> 엔터 public c..

aries574.tistory.com

 

이전 시간에  ListView를 통해 동물 리스트를 만들어 보았습니다.

이번 시간에는 동물 리스트에 조회 기능을 추가해 보겠습니다.

1. 메인 화면 구성 activity_main.xml

기존 만들었던 화면에 SearchView 태그가 추가되었습니다.

queryHint는 검색 아이콘을 누르면 미리 보여주는 문구입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <androidx.appcompat.widget.SearchView
        android:id="@+id/animal_search_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:queryHint="동물 이름을 입력하세요" />


    <ListView
        android:id="@+id/animal_listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

 

2. 메인 코드 구현 MainActivity.java

onCreate 메서드에 searchAnimal() 함수를 입력하고

searchAnimal 함수를 추가하였습니다.

public class MainActivity extends AppCompatActivity {

    public static ArrayList<Animal> animalList = new ArrayList<Animal>();

    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        searchAmimal();

        setUpData(); //데이터 셋팅

        setUpList(); //리스트 셋팅

        setUpOnClickListener();// 상세 페이지 이벤트
    }

    private void searchAmimal(){

        SearchView searchView = findViewById(R.id.animal_search_view);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {

                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {

                ArrayList<Animal> filterAnimal = new ArrayList<>();

                for(int i = 0; i < animalList.size(); i++){

                    Animal animal = animalList.get(i);

                    //데이터와 비교해서 내가 쓴 동물 이름이 있다면
                    if(animal.getName().toLowerCase().contains(newText.toLowerCase())){

                        filterAnimal.add(animal);
                    }
                }

                AnimalAdapter adapter = new AnimalAdapter(getApplicationContext(), 0, filterAnimal);
                listView.setAdapter(adapter);

                return false;
            }
        });
    }

    private void setUpData() {

        Animal elephant = new Animal("0", "elephant", R.drawable.elephant);
        animalList.add(elephant);

        Animal lion = new Animal("1", "lion", R.drawable.lion);
        animalList.add(lion);

        Animal monkey = new Animal("2", "monkey", R.drawable.monkey);
        animalList.add(monkey);

        Animal mouse = new Animal("3", "mouse", R.drawable.mouse);
        animalList.add(mouse);

        Animal rabbit = new Animal("4", "rabbit", R.drawable.rabbit);
        animalList.add(rabbit);

        Animal elephant2 = new Animal("5", "elephant2", R.drawable.elephant);
        animalList.add(elephant2);

        Animal lion2 = new Animal("6", "lion2", R.drawable.lion);
        animalList.add(lion2);

        Animal monkey2 = new Animal("7", "monkey2", R.drawable.monkey);
        animalList.add(monkey2);

        Animal mouse2 = new Animal("8", "mouse2", R.drawable.mouse);
        animalList.add(mouse2);

        Animal rabbit2 = new Animal("9", "rabbit2", R.drawable.rabbit);
        animalList.add(rabbit2);
    }

    private void setUpList() {

        listView = findViewById(R.id.animal_listView);

        AnimalAdapter adapter = new AnimalAdapter(getApplicationContext(), 0, animalList);
        listView.setAdapter(adapter);
    }

    private void setUpOnClickListener() {

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

                Animal selectAnimal = (Animal)listView.getItemAtPosition(position);

                Intent showDetail = new Intent(getApplicationContext(), DetailActivity.class);

                showDetail.putExtra("id", selectAnimal.getId());

                startActivity(showDetail);
            }
        });
    }
}

 

3. 실행화면

li를 입력하자 li가 포함된 정보만 조회가 되고 있습니다.

 

2021.12.23 - [안드로이드] - [안드로이드] NumberPicker 숫자 선택하는 방법 알아보기

 

[안드로이드] NumberPicker 숫자 선택하는 방법 알아보기

이번 시간에는 계정을 만들 때 흔히 볼 수 있는 숫자 선택하는 기능을 알아보겠습니다. 안드로이드에서는 NumberPicker를 통해 쉽게 만들 수 있습니다. 1. 메인화면 구성 (activity_main.xml) <?xml version="1.

aries574.tistory.com

2021.12.20 - [안드로이드] - [안드로이드] Material Floating Action Button 쉽게 만드는 방법

 

[안드로이드] Material Floating Action Button 쉽게 만드는 방법

이번 시간에는 material floating action button에 대해서 알아보겠습니다. floating action button의 종류에는 1. 기본형(Regular), 2. 소형(Mini), 3. 확장형(Extended)이 있습니다. 이제 만들어보겠습니다. 1..

aries574.tistory.com

2021.12.21 - [안드로이드] - [안드로이드] Material Floating Action Button Animation 적용하는 방법

 

[안드로이드] Material Floating Action Button Animation 적용하는 방법

이번 시간에는 material floating action button에 animation 적용하는 방법을 알아보겠습니다. 1. 라이브러리 등록 build.gradle(Module:프로젝트명:app) dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다...

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역