프로그래밍

안드로이드 스튜디오 GridView

안드로이드 스튜디오
반응형

//activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <GridView
        android:id="@+id/grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="4"
        android:gravity="center"/>
</LinearLayout>
//dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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">

    <ImageView
        android:id="@+id/ivPoster"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
//MainActivity.java
package com.example.gridview;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GridView gridView = findViewById(R.id.grid);
        final Adapter adapter = new Adapter(this);
        gridView.setAdapter(adapter);

        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                View dialogview = (View) View.inflate(MainActivity.this, R.layout.dialog,null);
                AlertDialog.Builder log = new AlertDialog.Builder(MainActivity.this);
                ImageView ivPoster = (ImageView) dialogview.findViewById(R.id.ivPoster);
                ivPoster.setImageResource(adapter.thumbimage[position]);
                log.setTitle(adapter.thumbimage[position]);
                log.setIcon(R.mipmap.ic_launcher_round);
                log.setView(dialogview);
                log.setNegativeButton("닫기", null);
                log.show();

            }
        });
    }
}
//Adapter.java
package com.example.gridview;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class Adapter extends BaseAdapter {
    private Context myContext;
    public Integer[] thumbimage = {
        R.drawable.pic_001,R.drawable.pic_002,
        R.drawable.pic_003,R.drawable.pic_004,
        R.drawable.pic_009,R.drawable.pic_010,
        R.drawable.pic_011,R.drawable.pic_012,
        R.drawable.pic_017,R.drawable.pic_018,
        R.drawable.pic_019,R.drawable.pic_020,
        R.drawable.pic_025,R.drawable.pic_026,
        R.drawable.pic_028,R.drawable.pic_029,
        R.drawable.pic_034,R.drawable.pic_035,R.drawable.pic_036,
    };
    public Adapter (Context mycontext){
        this.myContext = mycontext;
    }
    @Override
    public int getCount() {
        return thumbimage.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(myContext);
            imageView.setLayoutParams(new GridView.LayoutParams(200, 200));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        }
        else{
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(thumbimage[position]);
        return imageView;
    }
}

 

반응형