ListView, ListAdapter

Posted by 겨울에
2011. 2. 4. 01:41 scrap/ Android


리스트 뷰의 생성

 

생성자

ListView 클래스

ListView(Context context) 

LinearLayout layout=new LinearLayout(this);

layout.setOrientation(LinearLayout.VERTICAL);

setContentView(layout);

 

ListView lv=new ListView(this);

layout.addView(lv); 

 

 

 

리스트 뷰에 뿌려질 데이터 연결

 

ArrayAdapter

 

 ArrayAdapter 는 Adapter pattern 에서 나온 것으로, 이를 쓰는 개체에서 어느것이든

받아들일 수 있게 하는 패턴이다. 즉 listView.setAdapter(adapter); 라고 하면 listView

는 해당 어뎁터가 어떤 것이든지 원하는 데이터를 꺼낼 수 있다.

 ArrayAdapter<String> adapter를 사용하여 문자열을 반환하게 한다.

 

ArrayAdapter<String> 클래스

ArrayAdapter<String>(Context context, int textViewResourceId, String[] objects)

ArrayAdapter<String> adapter=new ArrayAdaper<String>(this,android.R.layout.simple_list_item_1, mStrings);

lv.setAdapter(adapter);

 

 

 

android.R 은 API 상에서 미리 정의된 리소스로 R.resource 와 구분해야 한다.

각 값이 의미하는 내용은 다음과 같다.

 

 textViewResourceId 값

의미 

 simple_list_item_1

 simple_list_item_2

 simple_list_item_checked

 simple_list_item_single_choice

 simple_list_item_multiple_choice

하나의 텍스트 뷰

두개의 텍스트 뷰

체크표시

라디오 버튼

체크 버튼 

 
 
예제소스)
package study.chapter05.listex;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.AdapterView;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
public class ListEx extends Activity implements
  AdapterView.OnItemClickListener {
 // 리스트로 사용될 데이터
 private String[] mStrings = { "낙산공원", "삼청동,인사동,쌈지길", "경복궁", "덕수궁", "창경궁",
   "청계천", "응봉산 야경", "항동 일몰", "합정동 양화진 외국인 선교사묘지", "어린이 대공원", "석촌호수",
   "의릉", "남산, 한옥마을", "남한산성 야경", "미사리조정경기장", "일산호수공원",
   "구리유채꽃축제, 코스모스축제", "안산협궤철로, 안산해바라기축제", "오이도 일몰", "프로방스, 해이리",
   "연천허브빌리지", "평화누리공원, 임진각", "과천 경마장", "홍릉수목원", "부천 아인스월드", "서울숲" };
 // 생성자
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  // 레이아웃 생성
  LinearLayout layout = new LinearLayout(this);
  layout.setOrientation(LinearLayout.VERTICAL);
  setContentView(layout);
  // 리스트 뷰 생성
  ListView lv=new ListView(this);
  layout.addView(lv);
  
  // 데이터 연결
  ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings);
  lv.setAdapter(adapter);
  
  // 클릭 이벤트 설정
 lv.setOnItemClickListener(this);
 }
 // 리스트뷰의 클릭 이벤트
 @Override
 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
  String itemText=((TextView)arg1).getText().toString();
  int itemIndex=arg2;
  showDialog(this, "result", itemText+" -> index="+Integer.toString(itemIndex));
 }
 // 대화상자 표시
 private static void showDialog(final Activity activity, String title, String text) {
  AlertDialog.Builder ad = new AlertDialog.Builder(activity);
  ad.setTitle(title);
  ad.setMessage(text);
  ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int whichButton) {
    activity.setResult(Activity.RESULT_OK);
   }
  });
  ad.create();
  ad.show();
 }
}
 

 

'scrap >  Android' 카테고리의 다른 글

[Android] Activity 에서 Dialog 띄우기.  (0) 2011.02.06
AlertDialog  (0) 2011.02.06
android - Selector  (0) 2011.02.04
Listview drag&drop  (0) 2011.02.04
OutOfMemoryError  (0) 2011.02.04