프로그래밍/Android2011. 8. 22. 14:11


리스트뷰를 사용하려면 세 가지 요소가 필요합니다.

- ListView
- 어댑터
- 원본 데이터

ListActivity를 상속하면 리스트뷰의 id를 반드시 @android:id/list로 설정해야합니다. 그렇지 않으면 런타임 오류가 발생합니다.
리스트에 표시할 항목이 없을 때 사용자에게 보여줄 화면을 설정할 수도 있습니다. 이때는 표시할 화면의 id를 @android:id/empty로 설정해주면 됩니다.

리스트뷰의 ID를 제대로 설정하지 않았을 때 발생하는 런타임 오류

리스트에 표시할 내용이 없을 때 사용자에게 보여줄 화면



레이아웃


1
2
3
4
5
6
7
8
9
<ListView android:layout_height="wrap_content"
        android:id="@android:id/list"
        android:layout_width="fill_parent"></ListView>
     
    <TextView android:layout_width="wrap_content"
        android:id="@android:id/empty"
        android:text="표시할 내용이 없습니다."
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>

코드

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 ListViewExample extends ListActivity {
    private ArrayList<String> list;
    private ArrayAdapter<String> adapter;
    private EditText inputText;
    private Button inputButton;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        inputText = (EditText)findViewById(R.id.inputText);
        inputButton = (Button)findViewById(R.id.inputButton);
        list = new ArrayList<String>();
         
        inputButton.setOnClickListener(new OnClickListener(){
 
            @Override
            public void onClick(View v) {
                list.add(inputText.getText().toString());
                inputText.setText("");
                adapter.notifyDataSetChanged();
            }
             
        });
         
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list);
         
        setListAdapter(adapter);
    }
}


리스트뷰에서 선택한 항목의 이벤트 처리

ListActivity의 onListItemClick() 메서드를 오버라이드한 후 원하는 내용을 구현하면 됩니다.

1
2
3
4
5
@Override
        protected void onListItemClick (ListView l, View v, int positon, long id) {
            super.onListItemClick(l, v, position, id);
            Toast.makeText(this, list.get(positon), Toast.LENGTH_SHORT).show();
}

- ListView : 항목 선택 이벤트가 발생한 리스트뷰의 인스턴스
- View : 선택한 '항목'의 뷰 인스턴스 (리스트의 한 항목)
- position : 선택한 항목의 인덱스 값
- id : 데이터베이스를 표시하는 리스트뷰일 경우 해당 항목의 id값




출처 - 기초부터 다지는 커니의 안드로이드




'프로그래밍 > Android' 카테고리의 다른 글

메뉴에 대해...  (0) 2011.08.22
Toast(토스트)  (0) 2011.08.22
AutoCompleteTextView  (0) 2011.08.22
DatePicker, TimePicker  (0) 2011.08.22
ProgressBar, SeekBar, RaingBar  (0) 2011.08.19
Posted by 건깡