<?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:setretchMode="columnWidth|spacingWidth"
열 내부에 여유 공간이 생겼을때 그여유 공간에 대한 처리 방법지정
columnWidth로 지정하면 남는 공간을 각각의 열에 배분해서 열의 넓이를 늘리는 효과
spacingWidth로 지정하면 남는 공간을 열과 열사이의 여백에 배분해서 열사이의 여백의
넓이를 늘리는 효과
-->
<GridView
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:verticalSpacing="35dp"
android:horizontalSpacing="5dp"
android:numColumns="auto_fit"
android:columnWidth="100dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:drawSelectorOnTop="false"/>
</LinearLayout>
package com.commonsware.android.selection8;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;
public class GridDemo extends Activity implements
AdapterView.OnItemClickListener {
//이벤트 리스너
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);
selection = (TextView) findViewById(R.id.selection);
//이벤트 소스
GridView g = (GridView) findViewById(R.id.grid);
//ArrayAdapter를 상속받아서 정의한 FunnyLookingAdapter 등록
g.setAdapter(new FunnyLookingAdapter(this,
android.R.layout.simple_list_item_1, items));
//이벤트 소스와 이벤트 리스너가 구현된 객체 연결
g.setOnItemClickListener(this);
}
//이벤트 핸들러
public void onItemClick(AdapterView adapter, View v, int position,
long id) {
selection.setText(items[position]);
}
//내부 클래스
private class FunnyLookingAdapter extends ArrayAdapter<string> {
Context ctxt;
FunnyLookingAdapter(Context ctxt, int resource, String[] items) {
super(ctxt, resource, items);
this.ctxt=ctxt;
}
//ArrayAdapter의 getView재정의
//데이터 바인딩시 getView 호출됨
//전달되는 인자
//int position : 데이터가 바인딩될 위치 정보
//View convertView : position에 데이터를 처리할 객체
//ViewGroup parent : 사용중인 GridView객체
public View getView(int position, View convertView,ViewGroup parent){
TextView label=(TextView)convertView;
if(convertView ==null){
convertView =new TextView(ctxt);
label=(TextView)convertView;
}
label.setText(items[position]);
return(convertView);
}
}
}