리스트뷰를 사용하려면 세 가지 요소가 필요합니다.
- 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 |