본문 바로가기
TechNical/Android

Android] GridView를 써 보자.

by 강멍멍이 2011. 6. 2.
반응형

아.. 공부하기 싫어 싫어 ~_~
그래도 뭐.. 틈틈이 어쩌다 공부 한 거를 좀 올려놓고 정리 좀 해야 겠다.
머리속에는 이것저것 만들어 보고 싶은게 있는데 기술이 딸리니 어떻게 진행이 안 된다. ㅋ
일단 그리드뷰를 한번 만들어 보기로 했다.
처음에는 이게 뭔가.. 막막했던 것들이 자꾸 보다 보니까 조금씩 정말 조금씩 눈에 들어 오기 시작한다.
여기저기꺼 참고해서 맨들었삼.

[main.xml]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/LinearLayout01"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical"
>
 <TextView  
     android:id="@+id/textview"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:gravity="center"
     android:text="그지같지만 이건 그리드다"
 /> 
 <GridView 
     android:id="@+id/grid" 
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:padding="10dp"
     android:verticalSpacing="10dp"
     android:horizontalSpacing="10dp"
     android:numColumns="3"
     android:columnWidth="60dp"
     android:stretchMode="columnWidth"
     android:gravity="center"
  />
</LinearLayout>


[GridTest.java]
package kei.gridtest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class GridTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        GridView grid = (GridView)findViewById(R.id.grid);
       
        ImageAdapter Adapter = new ImageAdapter(this);
  grid.setAdapter(Adapter);
// 여기서 클릭 이벤트 발생시켜도 된다.  
//  grid.setOnItemClickListener(new OnItemClickListener() {
//   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//    Toast.makeText(GridTest.this, position + "번째 선택", Toast.LENGTH_SHORT).show();
//   }
//  });
    }
}

class ImageAdapter extends BaseAdapter {
 private Context mContext;
 String[] gridArr = { "곰", "문어", "멍멍이", "호랑이" };
 public ImageAdapter(Context c) {
  mContext = c;
 }
 public int getCount() {
  return 9;
 }
 public Object getItem(int position) {
  return gridArr[position % 4];
 }
 public long getItemId(int position) {
  return position;
 }
 
 
 public View getView(int position, View convertView, ViewGroup parent) {
    
  View v;
  if (convertView == null) {
   v = new TextView(mContext);
   ((TextView)v).setText(gridArr[position % 4]);   
  } else {
   v = convertView;
  }
  
  v.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
             new AlertDialog.Builder(v.getContext())
                .setTitle(((TextView)v).getText())
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                     dialog.dismiss();
                    }
                })
                .show();
            }
  });
  return v;
 }
}

반응형

댓글