안드로이드 스튜디오
- 리스트뷰 -
이번 포스팅은 리스트뷰에 관한 내용을 포스팅 할 것이다.
리스트뷰라는 이름만으로도 리스트의 이미지가 머릿속에 떠오를텐데 바로 그 이미지를 보여주는 위젯이 리스트뷰이다.
그럼 바로 리스트뷰의 생성과 간단한 사용법을 알아보자
[ ListView ]
생성은 어느 위젯들과 다를 바 없이 activity_main.xml 에 들어가서 생성을 해 준다.
Design 탭에서 바로 리스트뷰를 만들어주고 싶으면
Palette에서 Legacy탭에 ListView가 있는 것을 확인할 수 있다.
우리는 늘 하던대로 Text탭에서 ListView를 생성해보자.
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
간단하게 리스트뷰를 만들어봤다.
여기서 LinearLayout으로 레이아웃을 변경한 상태에서
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
~
android:orientation="horizontal"
다음과 같이 orientation의 값이 "horizontal"로 설정되어 있으면 다음과 같은 리스트뷰가 나오며
<"horizintal" 일때 listview 모습>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
~
android:orientation="vertical"
만일 orientation 값이 "vertical"로 설정되어 있다면 다음과 같이 나타난다.
<"vertical" 일때 listview 모습>
다음으로 리스트뷰 안에 데이터값을 넣는 방법을 알아보자
중요한 개념은 리스트뷰에 리스트를 넣기 위해서는 리스트 자료형을 추가로 만들어줘야 한다.
그리고 그 리스트와 리스트뷰를 연결해주는 다리역할을 해주는 어댑터가 필요하다.
우선 리스트 안에다 스트링 형의 데이터를 넣어주고 그 리스트와 리스트뷰를 연결해주는 어댑터의 사용까지 알아보자면
public class MainActivity extends AppCompatActivity {
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.list);
List<String> data = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
list.setAdapter(adapter);
data.add("Android");
data.add("Tutorial");
data.add("ListView");
adapter.notifyDataSetChanged();
}
}
천천히 살펴보자면
list = (ListView)findViewById 부분까지는 이전에 다룬 내용들이라 무난하지만 그 다음부터는 생소하게 느껴질 것이다.
List<String> data 는 String형의 데이터를 가질 리스트를 data라는 변수명으로 선언한 것이고
=new ArrayList<>(); 여기서 ArrayList는 배열형태의 리스트를 의미하게 된다.
그 다음줄은 ArrayList에 의해 이것을 리스트뷰에 연결해 줄 어댑터인 ArrayAdapter 형의 adapter가 생성되는 것이며
new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); 에서 인자들을 하나씩 살펴보면
this는 현재 생성된 장소인 MainActivity를 의미하고
android.R.layout.simple_list_item_1 은 안드로이드에서 기본적으로 제공하는 리스트뷰 폼 UI를 가져온 것이다.
(쉽게 말해 기본 제공되는 디자인)
data부분은 리스트뷰와 연결할 List, 여기에선 전에 만들어놓은 List 변수를 나타낸다.
그 다음 리스트에 자료를 추가하고 싶을때는
(List형 변수) data.add("StringData"); 와 같이 추가하고싶은 데이터를 넣어주면 된다.
adapter.notifyDataSetChanged(); 는 notify 단어 뜻 그대로 변경된 데이터의 셋팅을 통보, 저장한다는 의미이다.
그냥 어댑터로 리스트와 리스트뷰를 연결하고 나서 마지막에는 꼭 notifyDataSetChange를 써줘야한다! 이정도로
알고있으면 될 것 같다.
'안드로이드 스튜디오' 카테고리의 다른 글
#7. 내비게이션 메뉴 커스텀 예시 (0) | 2019.02.12 |
---|---|
#6 내비게이션 메뉴 (Navigation Menu) 의 구성, 틀 (0) | 2019.02.12 |
#4 이미지뷰 (ImageView) & 토스트(Toast) (0) | 2019.02.11 |
#3 화면 전환하기 (Intent) (0) | 2019.02.11 |
#2 버튼 & EditText (0) | 2019.02.11 |