기초적인 내용이긴 하지만,
리스트뷰는 기본 안드로이드 애플리케이션 개발에서 거의 절반 이상을 차지하는 녀석이니,
한번 더 다뤄보도록 하겠습니다.


리스트뷰를 사용할때, 기본적으로 필요한 것들은 세가지 입니다.

컴포넌트로 사용될 ListView,
데이터를 담아두는 List(또는 ArrayList),
데이터를 Converting 해서 ListView에 보여줄 Adapter(여기서는 ArrayAdapter) 

액티비티에서 리스트뷰를 화면에 보여주기 위해서는
1. 리스트뷰 컴포넌트를 만든다.
2. 리스트(리스트뷰에 뿌려질 데이터)를 만든다.
3. 어댑터를 만든다.
4. 만들어진 어댑터를 리스트뷰에 set 시킨다.


추가적으로 여기서는 리스트뷰에 아이템을 추가하고 삭제하는 기능까지 구현합니다.


 Source code와 설명

Activity Code
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
package me.croute.listview;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
 
 
public class ListViewItemAddNDeleteActivity extends Activity implements OnItemClickListener, OnClickListener
{
    // 추가될 아이템 내용을 입력받는 EditText
    private EditText mEtInputText;
     
    // 아이템 추가 버튼
    private Button mBInputToList;
     
    // 리스트뷰
    private ListView mLvList;
     
    // 데이터 리스트
    private ArrayList<String> mAlData;
     
    // 리스트뷰에 사용되는 ArrayAdapter
    private ArrayAdapter<String> mAaString;
     
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        //////////////////////////////////////////////////////////////
        // 위젯 레퍼런스 시작
         
        mEtInputText = (EditText)findViewById(R.id.main_et_text);
        mBInputToList = (Button)findViewById(R.id.main_b_input_to_list);
         
        mLvList = (ListView)findViewById(R.id.main_lv_list);
         
        // 위젯 레퍼런스 끝
        ////////////////////////////////////////////////////////////
         
        // 아이템 추가 버튼에 클릭리스너를 등록한다.
        mBInputToList.setOnClickListener(this);
         
        // ArrayList 생성
        mAlData = new ArrayList<String>();
         
        // ArrayAdapter 생성
        mAaString = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mAlData);
         
        // 어뎁터를 리스트뷰에 세팅한다.
        mLvList.setAdapter(mAaString);
         
        // 리스트뷰에 아이템클릭리스너를 등록한다.
        mLvList.setOnItemClickListener(this);
    }
     
    @Override
    protected void onResume()
    {
        super.onResume();
         
        // ArrayList 초기화
        mAlData.clear();
         
        // ArrayList에 더미 데이터 입력
        defaultData();             
    }
 
    
    private void defaultData()
    {
        mAlData.add("아이템 00");
        mAlData.add("아이템 01");
        mAlData.add("아이템 02");
        mAlData.add("아이템 03");
        mAlData.add("아이템 04");
        mAlData.add("아이템 05");
        mAlData.add("아이템 06");
        mAlData.add("아이템 07");
        mAlData.add("아이템 08");
        mAlData.add("아이템 09");
        mAlData.add("아이템 10");
        mAlData.add("아이템 11");
        mAlData.add("아이템 12");
        mAlData.add("아이템 13");
        mAlData.add("아이템 14");
        mAlData.add("아이템 15");
        mAlData.add("아이템 16");
        mAlData.add("아이템 17");
        mAlData.add("아이템 18");
        mAlData.add("아이템 19");
    }