Android 프로그래밍에서 GridView와 ListView는 모두 일반적으로 사용되는 다중 제어 레이아웃이며 GridView는 Nine Palaces Diagram을 구현하는 첫 번째 선택입니다. 이 기사에서는 GridView를 사용하여 Nine Palaces Diagram을 구현하는 방법을 소개합니다. GridView에는 많은 용도가 있습니다. 인터넷에서 가장 일반적으로 소개되는 방법은 ImageAdapter를 구현하여 BaseAdapter를 상속한 다음 이를 GridView에 사용하는 것입니다. 이 기사에서 소개하는 GridView의 사용법은 매우 유사합니다. 이전에 소개한 ListView에
먼저 이 기사의 코드를 실행한 결과를 살펴보겠습니다.
본 글에서는 main.xml, night_item.xml, JAVA 소스코드 3개 파일을 추가/수정해야 합니다.
main.xml 소스 코드는 다음과 같습니다. 이는 항목을 로드하는 데 사용되는 GirdView입니다.
<?xml version="1.0" 인코딩="utf-8"?><GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview " android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="center"/>
다음은 일부 속성에 대한 간략한 소개입니다.
android:numColumns="auto_fit", GridView의 열 개수가 자동으로 설정됩니다.
android:columnWidth="90dp", 각 열의 너비(항목의 너비)
android:stretchMode="columnWidth", 크기 조정은 열 너비 크기와 동기화됩니다.
android:verticalSpacing="10dp", 두 행 사이의 여백. 예: 행 1(NO.0~NO.2)과 행 2(NO.3~NO.5) 사이의 간격은 10dp입니다.
android:horizontalSpacing="10dp", 두 열 사이의 여백.
다음으로 night_item.xml을 소개합니다. 이 XML은 이전 ListView의 ImageItem.xml과 매우 유사합니다.
<?xml version="1.0" 인코딩="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom ="4dip" android:layout_width="fill_parent"> <ImageView android:layout_height="wrap_content" android:id="@+id/ItemImage" android:layout_width="wrap_content" android:layout_centerHorizontal="true"> </ImageView> <TextView android:layout_width="wrap_content" android:layout_below="@+id/ItemImage" android:layout_height="wrap_content" android:text="TextView01" android:layout_centerHorizontal="true" android:id="@+id/ItemText"> </TextView></RelativeLayout>
마지막으로 이전 ListView JAVA 소스 코드와 매우 유사하지만 "선택된" 이벤트 처리가 더 많은 JAVA 소스 코드가 있습니다.
public void onCreate(Bundle saveInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView Gridview = (GridView) findViewById(R.id.gridview);//동적 배열을 생성하고 이를 data ArrayList <HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();for(int i=0;i<10;i++){ HashMap<String, Object> map = new HashMap<String, Object>() map.put("ItemImage", R.drawable. icon);//이미지 리소스의 ID를 추가합니다. map.put("ItemText", "NO."+String.valueOf(i));//일련번호에 따라 ItemText를 만듭니다. lstImageItem.add(map);}//동적 배열의 어댑터 ImageItem <====> 요소를 생성합니다. 두 요소는 일대일로 대응됩니다. SimpleAdapter saImageItems = new SimpleAdapter(this, //설명 없음 lstImageItem,// 데이터 소스 R.layout.night_item,//night_item의 XML 구현//ImageItem에 해당하는 동적 배열 및 하위 항목 new String[] {"ItemImage","ItemText"}, //ImageItem XML 파일의 ImageView 1개와 TextView ID 2개 new int[] {R.id.ItemImage,R.id.ItemText});//gridview를 추가하고 표시합니다. setAdapter(saImageItems);//메시지 처리 추가 Gridview.setOnItemClickListener(new ItemClickListener());}//AdapterView를 클릭하면(터치스크린 또는 키보드) 반환된 항목 클릭 이벤트 클래스 ItemClickListener가 OnItemClickListener를 구현합니다.{ public void onItemClick(AdapterView<?> arg0,//클릭이 발생한 AdapterView View arg1 ,//클릭된 AdapterView 내의 뷰 int arg2,//어댑터의 뷰 위치 long arg3//클릭한 항목의 행 ID ) { //이 경우 arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); 아이템의 ItemText setTitle((String)item.get("ItemText")) }}