ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android Studio: List View
    Android 2020. 9. 22. 10:14

     

     

    안녕하세요 오늘은 안드로이드 스튜디오에서 가장 중요하다고 들은(?) List View에 대해서 알아보았어요.

    먼저 Andriod Studio에 프로젝트를 하나 만들어서 List View에 대해서 공부하도록 할게요.

     

     

    동물들 이름으로 List View를 구성해보는 실습을 진행할 것이기 때문에, 해당 List View의 id는 "animalListView"로 작명해보았어요 ㅎㅎ 지난번처럼 Constraint를 꼭 설정해줘야해요.

     

    그리고 이후에 MainActivity.java에 아래와 같이 코드를 작성해줬어요.

     

    package com.example.listview_practice;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    import java.util.ArrayList;
    import static java.util.Arrays.asList;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    		
            // 1. 리스트 뷰(myListView)를 생성해준다. 이때 findViewById에게 "animalListView"를 넘겨준다.
            ListView myListView = (ListView) findViewById(R.id.animalListView);
            
            // 2. 리스트 뷰에 보여줄 ArrayList를 생성해 동물들 이름을 저장해준다.
            final ArrayList<String> animals = new ArrayList<String>(asList("Shark","Panda","Lion","Tiger","Dog","Cat"));
    		
            
           	// 3. 리스트 뷰와 리스트를 연결(?)해줄 ArrayAdapter를 하나 만들어서 layout 설정과 함께 List를 넘겨준다.
            ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, animals);
    		
            // 4. 마지막으로 리스트 뷰(myListView)에다가 미리 만들어둔 arrayAdapter를 세팅해준다.
            myListView.setAdapter(arrayAdapter);
    		
            
            
            // 각 리스트 뷰의 요소들을 클릭했을 때, 어떤 이벤트를 발생시킬지 구현하는 부분
            // 오늘은 각 리스트 뷰의 요소들 즉, 동물들 이름을 클릭했을 때 해당 동물을 안드로이드 알림창에 띄워보았다.
            myListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    // Toast를 치면 자동완성되는데, 2번째 인수로 String 값을 설정해주면 해당 String 값을 알림창에 띄워서 보여준다.
                    Toast.makeText(MainActivity.this, String.format("Hello, %s", animals.get(i)), Toast.LENGTH_SHORT).show();
                }
            });
        }
    }

     

    코드가 복잡해보이지만, 하나하나 보면 절대 어려운 개념들은 아니에요. 먼저 리스트 뷰를 출력해주기 위해서 ListView를 하나 만들어주고(myListView), 그 다음에 해당 myListView에 넘겨줄, myListView가 사용할 ArrayList를 하나 생성해줘야해요. 여기선 동물들의 이름을 사용하기 때문에 String형으로 ArrayList를 하나 만들어 주었어요(animals).

     

    그리고, 이제 myListView와 animals를 연결(?)해줄 ArrayAdapter를 하나 만들어줘야 하는데요, 선언을 해줄 때는 두 번째 인수로 layout 설정을 넘겨주고, 마지막 세번 째 인수로는 넘겨줄 List를 적어줘야해요. 저도 이 부분에서 조금 이해가 안됐지만, 하나하나 천천히 보고 이해하면 이해가 될 거에요.

     

    자 이제 myListView와 animals를 연결해줄 arrayAdapter까지 만들었으니, myListView에 arrayAdapter를 세팅해주는 4번 절차를 진행해줍니다. 여기까지하면 화면에는 아래와 같이 ListView가 잘 나타날 거에요.

     

     

    이제 열심히 만든 ListView를 그냥 보는 용도가 아닌, 무언가 이벤트를 발생시키는 용도로 사용하기 위해서는 저 코드 아래 부분의 복잡해보이는 부분을 구현해야해요. 하나하나 살펴봅시다.

     

    먼저 myListView의 setOnItemClickListner를 이용해야해요. 이름 처럼 리스트 뷰의 아이템을 클릭을 감지하는 역할을 하는 메서드인데요, 인수로는 AdapterView의 OnItemClickListner를 넘겨줘야하네요. 그리고 만약 아래에 Override할 부분이 자동으로 생성되지 않는다면 Ctrl + 'O' 키를 이용해 쉽게 Override를 할 수 있으니 참고하면 좋아요.

     

    이제 저 아래 Override를 할 부분을 보면,  adapterView, view, i, l 등을 매개변수로 갖고 있죠. adpaterView는 리스트 뷰 그 자체를 의미하고, view는 리스트 뷰 중에 클릭된 해당 view를 의미해요. 그리고 'i'는 클릭된 view의 index에요. 여기서 클릭된 동물에 접근하기 위해서는 이 'i'를 이용해 접근해야해요.

     

    미리 만들어 둔 ArrayList인 animals에 get() 메서드를 통해 i 값을 넘겨주면서 동물의 이름에 접근할 수 있는데요, 따라서 맨 마지막 줄의 Toast 메서드의 String 값으로 "animals.get(i)"를 넘겨준 것이에요.

     

    "Panda"를 클릭했을 때의 팝업 알림

     

    오늘은 ListView의 정말 간단한 사용법에 대해서 알아보았는데요, 안드로이드의 모든(?) 애플리케이션에는 ListView가 사용된다고 해도 과언이 아니라고 하네요... 그러니까 실제로 애플리케이션을 만들려고 한다면 ListView에 대해서 정말 많은 공부가 필요하다고 하니... 더 열심히 공부해서 꼭 저만의 애플리케이션을 만들어야겠어요! 

    'Android' 카테고리의 다른 글

    Android Studio 설치 및 살펴보기  (0) 2020.09.19
Designed by Tistory.