Android 격자 보기 GridView 사용

GridView(격자 보기)는 행렬 의 방식 에 따라 내용 을 표시 하 는데 보통 그림,그림 등 내용 을 표시 하 는 데 사용 된다.예 를 들 어 구 궁 격 도 를 실현 하려 면 GridView 를 사용 하 는 것 이 가장 좋 고 가장 간단 하 다.어댑터 설정 에 주로 사 용 됩 니 다.
격자 보기 GridView 의 배열 방식 은 행렬 과 유사 합 니 다.화면 에 많은 요소(문자,그림 또는 다른 요소)가 행렬 형식 으로 표시 되 어야 할 때 GridView 컨트롤 을 사용 할 수 있 습 니 다.
GridView 에서 자주 사용 하 는 XML 속성:

본 고 는 GridView 컨트롤 을 어떻게 사용 하여 모 바 일 화면 에 있 는 각 애플 리 케 이 션 아이콘 의 배치 와 애플 리 케 이 션 이름 의 표 시 를 실현 하 는 지 구체 적 인 사례 로 설명 할 것 이다.
완 료 된 프로그램의 실행 효 과 는 그림 1 과 같다.

그림 1 메 인 화면 표시 효과
1.인터페이스 레이아웃
GridView 의 API 도움말 문서(http://developer.android.com/reference/android/widget/GridView.html)를 보면 GridView 의 일반적인 xml 속성 은 그림 2 와 같다.

그 중에서 android:columnWidth[int]는 각 열의 폭 을 설정 하 는 데 사 용 됩 니 다.android:gravity[int]는 모든 격자 의 비중 을 설정 하 는 데 사 용 됩 니 다.android:horizontal Spacing[int]격자 사이 의 기본 수평 거 리 를 설정 하 는 데 사용 합 니 다.android:numColumn[int]은 열 수 를 설정 하 는 데 사 용 됩 니 다.android:stretchMode[int]열 을 설정 할 때 사용 가능 한 공간 을 어떤 방식 으로 채 워 야 합 니까?android:vertical Spacing[int]격자 사이 줄 의 기본 수직 거 리 를 설정 하 는 데 사 용 됩 니 다.
상기 GridView 에서 자주 사용 하 는 xml 속성 을 알 게 된 후에 우 리 는 메 인 인터페이스의 xml 레이아웃 파일 을 작성 할 수 있 습 니 다.xml 레이아웃 파일 에서 저 희 는 LinearLayout 를 사용 하여 전체 화면 을 수직 으로 배치 한 다음 에 이 레이아웃 에 GridView 컨트롤 을 추가 하면 됩 니 다.구체 적 인 xml 레이아웃 파일 원본 코드 는 다음 과 같 습 니 다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >
   <GridView 
   android:id="@+id/gridView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:numColumns=""
   android:horizontalSpacing="dp"
   android:verticalSpacing="dp">
   </GridView>
  </LinearLayout> 
GridView 컨트롤 에서 우 리 는 android:numColumns="4"를 통 해 격자 의 열 수 를 4 로 지정 합 니 다.android:horizontal Spacing="10dp"와 android:vertical Spacing="10dp"를 통 해 격자 사이 의 수평 거리 와 수직 거 리 를 모두 10dp 로 지정 합 니 다.
2.격자 요소 레이아웃
그림 1 에서 보 듯 이 모든 격자 안에 우 리 는 두 가지 내용 을 표시 해 야 한다.응용 소프트웨어 아이콘 과 응용 소프트웨어 이름 이다.따라서 우 리 는 격자 안의 요소 에 대해 상응하는 구 조 를 해 야 한다.
프로젝트 프로젝트 의 layot 디 렉 터 리 에'griditeminfo.xml'이라는 xml 레이아웃 파일 을 새로 만 들 고 격자 내 요소 에 대한 레이아웃 을 완성 할 수 있 습 니 다.이 xml 레이아웃 파일 에서 저 희 는 상대 적 인 레이아웃 RelativeLayout 를 사용 하여 격자 안의 요 소 를 배열 하고 ImageView 컨트롤 을 격자 안에 수평 으로 가운데 로 놓 아 프로그램의 아이콘 을 표시 합 니 다.응용 프로그램의 이름 을 표시 하기 위해 TextView 컨트롤 을 수평 으로 가운데 로 놓 습 니 다.구체 적 인 griditeminfo.xml 소스 코드 는 다음 과 같 습 니 다.

<?xml version="." encoding="utf-"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" >  
   <ImageView
   android:id="@+id/itemImage"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" >
   </ImageView>
   <TextView
   android:id="@+id/itemName"
   android:layout_below="@+id/itemImage"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" >
   </TextView>
  </RelativeLayout> 
3.자원 저장
이 인 스 턴 스 에서 우 리 는 많은 응용 프로그램 아이콘 과 응용 프로그램 이름 을 저장 해 야 한다.분명히 응용 프로그램 아이콘 과 응용 프로그램 이름 사이 에 일일이 대응 하 는 관계 가 존재 한다.우 리 는 HashMap 을 사용 하여 응용 프로그램 아이콘 과 응용 프로그램 이름 을 각각 저장 한 다음 에 HashMap 을 Array List 에 추가 하면 자원 의 저장 을 완성 할 수 있다.구체 적 인 실현 방법 은 다음 과 같다.

//            ArrayList 
  //Author:   -    
  ArrayList<HashMap<String, Object>> item = new ArrayList<HashMap<String, Object>>();
  for (int i = ; i < resIds.length; i++) {
   HashMap<String, Object> map = new HashMap<String, Object>();
   map.put("itemImage", resIds[i]);
   map.put("itemName", name[i]);
   item.add(map);
  }
그 중에서 배열 resIds[]는 응용 소프트웨어 아이콘 의 자원 id 를 저장 하고 있다.배열 name[]은 응용 프로그램 이름 을 저장 하고 for 순환 을 통 해 HashMap 에 저장 합 니 다.
4.심 플 어댑터 심 플 어댑터
간단 한 어댑터 SimpleAdapter 는 BaseAdapter 에서 계승 하여 정적 데 이 터 를 xml 파일 에 정의 한 보기 에 표시 합 니 다.예 를 들 어 정적 데 이 터 를 맵 으로 구 성 된 Array List 를 지정 할 수 있 습 니 다.Array List 의 각 항목 은 List 의 한 줄 에 대응 하고 Map 은 여러 가지 데 이 터 를 포함 할 수 있 습 니 다.
Simple Adapter 의 구조 방법 은 다음 과 같 습 니 다.

public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to); 
그 중에서 매개 변수 context 는 SimpleAdapter 와 연 결 된 컨 텍스트 대상 을 지정 하 는 데 사 용 됩 니 다.매개 변수 data 는 맵 목록 을 지정 하 는 데 사 용 됩 니 다.매개 변수 resource 는 자원 식별 자(즉 목록 항목 의 보기 레이아웃)를 지정 하 는 데 사 용 됩 니 다.파라미터 from 은 맵 목록 의 모든 데이터 에 대응 하 는 탭 을 지정 하 는 데 사 용 됩 니 다.인자 to 는 맵 목록 의 모든 데이터 가 레이아웃 파일 에 일치 하 는 대상 을 지정 하 는 데 사 용 됩 니 다.
이 실례 에서 Simple Adapter 를 실현 하 는 구조 방법 은 다음 과 같다.

 //SimpleAdapter  ,  ArrayList    
  //Author :     
  SimpleAdapter simpleAdapter = new SimpleAdapter
  (this, item, R.layout.griditeminfo, new String[] {"itemImage","itemName"},
   new int[] {R.id.itemImage,R.id.itemName}) {
  }; 
간단 한 어댑터 Simple Adapter 를 실현 한 후에 우 리 는 이 간단 한 어댑터 Simple Adapter 를 GridView 대상 에 추가 해 야 합 니 다.다음 과 같은 방법 으로 실현 할 수 있 습 니 다.

mGridView.setAdapter(simpleAdapter);
5.사건 감청
실제 응용 프로그램 에서 우 리 는 사용자 의 조작 을 감청 해 야 한다.즉,사용자 가 어떤 응용 프로그램 을 선 택 했 는 지 알 아야 한다.
격자 컨트롤 GridView 에서 자주 사용 하 는 이벤트 모니터 는 두 가지 가 있 습 니 다.Onitem Selected Listener 와 Onitem ClickListener 입 니 다.그 중에서 Onitem Selected Listener 는 프로젝트 선택 이벤트 감청 에 사용 되 고 Onitem ClickListener 는 프로젝트 클릭 이벤트 감청 에 사 용 됩 니 다.
이 두 사건 의 감청 을 실현 하려 면 간단 하 다.Onitem Selected Listener 와 Onitem ClickListener 인 터 페 이 스 를 계승 하고 추상 적 인 방법 을 실현 하면 된다.그 중에서 실현 해 야 할 OnItemClickListener 인터페이스의 추상 적 인 방법 은 다음 과 같다.

public void onItemClick(AdapterView<?> parent, View view, int position, long id);
실현 해 야 할 Onitem Selected Listener 인터페이스의 추상 적 인 방법 은 두 가지 가 있 는데 각각 다음 과 같다.

  public void onItemSelected(AdapterView<?> parent, View view, int position, long id);
  public void onNothingSelected(AdapterView<?> parent);

좋은 웹페이지 즐겨찾기