반응형

이번 시간에는 GridView의 정리한 자료를 바탕으로 앱을 만들어보았다.

아래 게시물의 내용이 포함된 앱을 만들었다.

xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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/gv"
        android:numColumns="2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
 
    <Button
        android:id="@+id/btn_input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="INPUT"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        />
 
</RelativeLayout>
cs

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.example.test8;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridView;
 
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends AppCompatActivity {
    List<String> data = new ArrayList<>();
    private Button btn_input;
    private GridView gv;
    int num = 4;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        data.add("seminzzang1");
        data.add("seminzzang2");
        data.add("seminzzang3");
 
        ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, data);
 
        gv = (GridView)findViewById(R.id.gv);
        btn_input = (Button)findViewById(R.id.btn_input);
 
        gv.setAdapter(adapter);
 
        btn_input.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                data.add("seminzzang"+num);
                num++;
                adapter.notifyDataSetChanged();
            }
        });
 
        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                data.remove(position);
                adapter.notifyDataSetChanged();
            }
        });
    }
}
cs

GridView를 구현하였다. GridView에 대해 설명이 별로 없어서 구글링으로 자료를 찾아보던중 ViewGroup계층도에서 GridView와 ListView가 동일한 클래스를 상속받은 것을 볼 수 있었다.

ViewGroup 계층도

그렇다면 GridView와 ListView가 동일한 과정으로 만들어지지 않을까 하는 생각이 들었고, ListView코드와 유사하게 코딩하여 GridView를 동작시킬 수 있었다.

GridView의 ListView와 다른 점은 xml code에서 numColumns 속성 값을 2로 설정했는데 이는 행렬에서 열의 갯수를 설정한다.

ListView에서 만든 앱과 동일한 기능을 하고 있으며, numColumns 값을 주어 두개의 열로 보여지는 뷰를 구현했다.

GridView - 초기
GridView - Input
GridView - remove

 

반응형

+ Recent posts