ListActivity를 상속하는 액티비티를 작성할 경우 ListView의 어댑터를 설정할 때 ListView를 참조하는 객체를 만들지 않아도어댑터를 지정할 수 있지만 ListView의 id를 필히@android:id/list 로 설정하여야 한다.
그렇지 않으면 아래와 같은 런타임 오류가 발생한다.


상속받은 클래스 종류

 Activity

 ListActivity

 .xml 에서 ListView 태그의 ID 값

 @+id/~~~

 @android:id/list

 자바파일에서 어댑터 연결 메소드

 setAdapter()

 setListAdapter()

 

 

ListView 에 표시된 항목을 클릭했을 때 어떤 동작을 구현하고자 할 경우
ListActivity 내의 onListItemClick() 메소드를 오버라이드한 후 구현한다.


 <ListView
  android:id="@android:id/list"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"   
    />
</LinearLayout>


public class AdapterTest2 extends ListActivity {
   
 TextView textView;
 String[] items = {"SUN", "MON", "TUE", "THU","FRI","SAT"};
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //ListActivity 로부터 상속을 받으면 ListAdapter 사용이 가능하다.       
        this.setListAdapter(new ArrayAdapter<String> 
              (this,android.R.layout.simple_list_item_1, items) //'itmes 라는 배열을 simpe_list_item_1에 맞춤뜻
             );
       
        textView = (TextView)findViewById(R.id.textView);
       
    }
   
   
    @Override      
    /*
     * ==== parameter 설명 ====
     * ListView l: 객체명
     * View v : 선택한 항목
     * int position : 선택한 놈의 위치(0부터 시작)
     * long id : 선택한 항목의 id값
     */
 protected void onListItemClick(ListView l, View v, int position, long id) {
  textView.setText(items[position]);  
 }

[펌] http://blog.naver.com/astrolena?Redirect=Log&logNo=70105990330


Posted by 예배하는 프로그래머