안드로이드2013. 1. 30. 18:49

글을 올린 블로거를 생각해서 광고 한번만 클릭해주시면 감사하겠습니다

1.우선 xml에 그리드뷰를 추가합니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >


    <GridView

        android:id="@+id/gridView1"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_alignParentLeft="true"

        android:layout_alignParentTop="true"

  android:stretchMode="columnWidth"

        android:numColumns="3" >

    </GridView>

</RelativeLayout>


//stretchMode="columnWidth"로 설정하면 그리드뷰에 아이템들의 열의 폭이 자동으로 조절됩니다

//android:numColumns="3" 이렇게 숫자로 지정해주던가 "auto_fit"으로 하면 아이템의 크기에 따라 자동으로 열수가 조정됩니다


커스텀으로 생성할 xml파일을 layout폴더에 생성합니다



xml은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >


    <ImageView

        android:id="@+id/imageView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:src="@drawable/ic_launcher"

        android:layout_gravity="center" />


    <TextView

        android:id="@+id/textView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:text="TextView" />


</LinearLayout>



.java 소스입니다

package com.example.gridviewtest;


import java.util.ArrayList;


import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.TextView;


public class MainActivity extends Activity {

Activity act = this;

GridView gridView;

//이미지 배열 선언

ArrayList<Bitmap> picArr = new ArrayList<Bitmap>();

//텍스트 배열 선언

ArrayList<String> textArr = new ArrayList<String>();


    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

        Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.a);

        Bitmap bm2 = BitmapFactory.decodeResource(getResources(), R.drawable.b);

        Bitmap bm3 = BitmapFactory.decodeResource(getResources(), R.drawable.c);

        Bitmap bm4 = BitmapFactory.decodeResource(getResources(), R.drawable.d);

        Bitmap bm5 = BitmapFactory.decodeResource(getResources(), R.drawable.e);

        Bitmap bm6 = BitmapFactory.decodeResource(getResources(), R.drawable.f);

        Bitmap bm7 = BitmapFactory.decodeResource(getResources(), R.drawable.g);

        Bitmap bm8 = BitmapFactory.decodeResource(getResources(), R.drawable.h);

        Bitmap bm9 = BitmapFactory.decodeResource(getResources(), R.drawable.i);

        Bitmap bm10 = BitmapFactory.decodeResource(getResources(), R.drawable.j);

        

        picArr.add(bm1);

        picArr.add(bm2);

        picArr.add(bm3);

        picArr.add(bm4);

        picArr.add(bm5);

        picArr.add(bm6);

        picArr.add(bm7);

        picArr.add(bm8);

        picArr.add(bm9);

        picArr.add(bm10);

        

        for (int i = 0 ; i < 10 ; i++) {

        textArr.add("숫자" + Integer.toString(i));

        }

        

        gridView = (GridView) findViewById(R.id.gridView1);

        gridView.setAdapter(new gridAdapter());


    }


    public class gridAdapter extends BaseAdapter {

    LayoutInflater inflater;

    

    public gridAdapter() {

    inflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }


@Override

public int getCount() {

// TODO Auto-generated method stub

return picArr.size();    //그리드뷰에 출력할 목록 수

}


@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return picArr.get(position);    //아이템을 호출할 때 사용하는 메소드

}


@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;    //아이템의 아이디를 구할 때 사용하는 메소드

}


@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

if(convertView == null) {

convertView = inflater.inflate(R.layout.grid_item, parent, false);

}

ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView1);

TextView textView = (TextView) convertView.findViewById(R.id.textView1);

imageView.setImageBitmap(picArr.get(position));

textView.setText(textArr.get(position));

imageView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

//이미지를 터치했을때 동작하는 곳

}

});

return convertView;

}

    

    }

}




나온 결과 화면 입니다



Posted by 퍼플카우D