Android/기본
ListActivity ArrayAdapter
Bohemian life
2012. 4. 28. 19:38
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/selection" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <!-- @android:id/list = 반드시 java에 ListActivity를 상속(extends) 시켜야됨 android: = Android.R.id.list http://developer.android.com/reference/android/R.id.html http://developer.android.com/reference/android/R.id.html#list (교제112p) +를 넣으면 생성 +가 없기 때문에 기존에 만들어진것을 호출하여 사용 --> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="false" /> <!-- android:drawSelectorOnTop="false" 위에 Selector를 그리지 않겠다 default : false true 하면 글씨가 보이지 않음 layout을 wrap_content로하면 안됨 wrap_content를 쓰면 속으로 에러가 발생(부하) 오직 fill_parent만 --> </LinearLayout>
package com.commonsware.android.selection; //ArrayAdapter import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.TextView; import android.widget.ArrayAdapter; //main.xml 에 @android:id/list = //반드시 java에 ListActivity를 상속(extends) 시켜야됨 //ListActivity public class ListViewDemo extends ListActivity { //Activity + 이벤트 리스너 TextView selection; String[] items = { "lorem", "ipsum", "dolor", "sit", "amet", "consectueuer", "adipiscing", "elit", "morbi", "vel", "ligula", "vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat", "placerat", "ante", "porttitor", "길다", "많다", "너무 많다", "너무 길다", }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //(this = ListViewDemo) //(simple_list_item_1 텍스트를 표현한 뷰 객체 (생성되어 // 있어서 호출하여사용)) (items= 위에 써놓은 아이템) setListAdapter(new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, items)); //클릭시 데이터 표시하기 위한 객체 생성 selection = (TextView) findViewById(R.id.selection); } //position 은 배열처럼 0부터의 값을 갖고있고 순차적으로 밑으로 내려갈수록 번호가 늘어남 //그번호로 ArrayAdapter로 뿌려지게됨 //이벤트 핸들러 ,리스너는 ListActivity가 가지고 있음(클래스 형태의 이벤트 리스너 역할) //OnListItemClick 재정의하여 사용 //ListView parent = ListView 객체 //View v = 클릭(터치)한 라인의 데이터를 처리하는 View 객체 //int position = 이벤트가 발생한 위치값(0부터 시작) //long id = ArrayAdapter를 사용할 경우는 position = id public void onListItemClick(ListView parent, View v, int position, long id) { selection.setText(items[position]+",position : "+position); } }