티스토리 뷰

안드로이드

[안드로이드] ListView 예제

머어하지 2017. 4. 24. 18:13

  간단하게 메뉴나 목록을 만들수 있는 ListView에 대해서 알아보겠습니다.

ListView

  우선 xml에서 ListView를 만들어 주었습니다.


1
2
3
4
   <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView" />
=cs


  이제 MainActivity에서 ListView에 Item을 추가시켜 주겠습니다.


1
2
3
4
5
6
7
8
9
10
11
ListView test;
public class MainActivity extends AppCompatActivity {
    ListView test; // ListView 형태를 선언.
    String[] item; // String 배열을 추가.
    ArrayAdapter<String> adapter; // String과 ListView를 연결해주기 위해 선언.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
cs


  ListView인 만큼 Item이 여러개 이어야 합니다. 그래서 String을 배열로 선언해주었습니다. 그리고 ListView와 Item을 연결해주는 ArrayAdapter도 선언해주었습니다. 다음으로 Item의 값들을 만들어 주겠습니다. 테스트용이므로 5개만 만들어 보았습니다.


1
2
3
4
5
6
test = (ListView) findViewById(R.id.listView);
        
        item = new String[5];
        for(int i= 0; i<5; i++){
            item[i] = "ListView Example "+i;
        }
cs


  for문을 사용해서 5개를 만들어 보았습니다. 이제 ListView와 들어갈 Item의 준비가 끝났으니 Adapter를 통한 연결을 해보겠습니다.


1
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,item);
cs


  Adapter에 들어가는 인자를 살펴보겠습니다. this는 사용하는 Activity이고, 2번째로 들어가는 인자는 ListView의 디자인이 들어가게 됩니다. 따라서 사진이나 다른것들이 들어가는 ListView를 만들고 싶으시면 Custom한 xml과 Adapter를 만들어 주어야합니다. 이부분은 후에 다루어 보겠습니다. 3번째는 앞서 만들었던 Item이 들어갔습니다. 이제 Adapter도 만들어졌으니 ListView와 연결해 보겠습니다.


1
test.setAdapter(adapter);
cs


  ListView로 선언되었던 test에 setAdapter를 통해 방금 생성했던 adapter와 연결시켰습니다. 지금까지한것의 결과는 다음과 같습니다.



  이제 기본으로 제공해주는 ListView의 외적 역활은 끝이 났습니다. 하지만 목록이 있으면 각각의 Item을 클릭하였을때 어떠한 일을 할까도 있어야합니다. setOnItemClickListener가 역활을 해줍니다.


1
2
3
4
5
6
7
test.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, 
                                                   int position, long id) {
                text.setText(testText[position]);
            }
        });
cs


  int position이 ListView의 몇 번째 List가 클릭되었는가를 알려주는 변수입니다. 따라서 에제에서는 해당 번째 Item을 TextView에 나타내고 있습니다. 그리고 결과는 다음과 같습니다.



  간단히 ListView에 대해서 알아보았습니다~!


MainActivity 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MainActivity extends AppCompatActivity {
    ListView test; // ListView 형태를 선언.
    TextView text; // TextView 형태를 선언.
    String[] testText = new String[5];
    String[] item; // String 배열을 추가.
    ArrayAdapter<String> adapter; // String과 ListView를 연결해주기 위해 선언.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        test = (ListView) findViewById(R.id.listView); // xml의 ListView를 등록
        text = (TextView) findViewById(R.id.textView);
 
        item = new String[5];
        for(int i= 0; i<5; i++){
            item[i] = "ListView Example "+i;
            testText[i] = ""+i+" 번째의 List를 눌러 이게 나왔습니다!";
        }
 
        adapter = new ArrayAdapter<String>(this
                                   android.R.layout.simple_list_item_1,item);
        test.setAdapter(adapter);
 
        test.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, 
                                                   int position, long id) {
                text.setText(testText[position]);
            }
        });
    }
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday