2022.10.18 그리드뷰

주영·2022년 10월 24일

Android Studio

목록 보기
9/13

11-2는 소스코드 올려주신다고 함

1018_1 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

        <GridView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/grid"
            android:gravity="center"
            android:numColumns="3" />

</LinearLayout>

dialog.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"
    android:gravity="center">

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

</LinearLayout>

MainActivity.java

package com.example.sw1018;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.Context;
import android.media.Image;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

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

        final GridView grid = findViewById(R.id.grid);
        MyGrid myGrid = new MyGrid(this);

        //위에 넣으면 final이 필요없고, 밑에서는 다른 애들이 참조하기 대문에 final을 붙여줌.
    }

    public class MyGrid extends BaseAdapter{
        Context context;
        // 그림 상수화 해놓은 것 배열로 만듦
        Integer[] posterId = {R.drawable.mov01, R.drawable.mov02,
                R.drawable.mov03, R.drawable.mov04,R.drawable.mov05, R.drawable.mov06,
                R.drawable.mov07, R.drawable.mov08,R.drawable.mov09, R.drawable.mov10,
                R.drawable.mov11, R.drawable.mov12};

        MyGrid(Context context){
            this.context = context;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            ImageView imgView = new ImageView(context);
            imgView.setLayoutParams(new ViewGroup.LayoutParams(140, 200));
            imgView.setScaleType(ImageView.ScaleType.CENTER);
            imgView.setPadding(5, 5, 5, 5);
            imgView.setImageResource(posterId[i]);

            final int pos = i;
            imgView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    View dialog = View.inflate(MainActivity.this,
                            R.layout.dialog, null);
                    AlertDialog.Builder dlg =
                            new AlertDialog.Builder(MainActivity.this);
                    ImageView ivPoster = dialog.findViewById(R.id.ivPoster);
                    ivPoster.setImageResource(posterId[pos]);

                    dlg.setTitle(posterTitle[pos]);
                    dlg.setView(dialog);
                    dlg.setNegativeButton("close", null);
                    dlg.show();
                }
            });
            return imgView;
        }

        public int getCount() {
            return posterId.length;
        }
        public Object getItem(int i) {
            return null;
        }
        public long getItemId(int i) {
            return 0;
        }

        String[] posterTitle = {"써니", "완득이", "괴물", "라디오스타",
                "써니", "완득이", "괴물", "라디오스타",
                "써니", "완득이", "괴물", "라디오스타"};
    }

}
profile
ㅎㅇ

0개의 댓글