ListView, ListAdapter
리스트 뷰의 생성
생성자 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 | 하나의 텍스트 뷰 두개의 텍스트 뷰 체크표시 라디오 버튼 체크 버튼 |
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;
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 |