2021.12.24 - [안드로이드] - [안드로이드] ListView 동물 리스트 만드는 방법
이전 시간에 ListView를 통해 동물 리스트를 만들어 보았습니다.
이번 시간에는 동물 리스트에 조회 기능을 추가해 보겠습니다.
기존 만들었던 화면에 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>
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);
}
});
}
}
li를 입력하자 li가 포함된 정보만 조회가 되고 있습니다.
2021.12.23 - [안드로이드] - [안드로이드] NumberPicker 숫자 선택하는 방법 알아보기
2021.12.20 - [안드로이드] - [안드로이드] Material Floating Action Button 쉽게 만드는 방법
2021.12.21 - [안드로이드] - [안드로이드] Material Floating Action Button Animation 적용하는 방법
[안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 크로스페이드(CrossFade) 쉽게 만드는 방법 (0) | 2021.12.27 |
---|---|
[안드로이드] 속성 애니메이션 (이미지를 움직이게 하는 방법) (0) | 2021.12.26 |
[안드로이드] 동물 리스트(ListView) 만드는 방법 (6) | 2021.12.24 |
[안드로이드] NumberPicker 숫자 선택하는 방법 알아보기 (0) | 2021.12.23 |
[안드로이드] Material Floating Action Button Animation 적용하는 방법 (0) | 2021.12.21 |
댓글 영역