Android控件之GridView探究

【转】http://www.apkbus.com/forum.php?mod=viewthread&tid=2436&extra=page%253D1

GridView是一项显示二维的viewgroup,可滚动的网格。一般用来显示多张图片。
以下模拟九宫图的实现,当鼠标点击图片时会进行相应的跳转链接。
目录结构
085617h9lpf4q7qlqhvarr.png
main.xml布局文件,存放GridView控件
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <!--

  3. android:numColumns="auto_fit" ,GridView的列数设置为自动

  4. android:columnWidth="90dp",每列的宽度,也就是Item的宽度

  5. android:stretchMode="columnWidth",缩放与列宽大小同步

  6. android:verticalSpacing="10dp",两行之间的边距,如:行一(NO.0~NO.2)与行二(NO.3~NO.5)间距为10dp

  7. android:horizontalSpacing="10dp",两列之间的边距

  8. -->

  9. <GridView xmlns:android="http://schemas.android.com/apk/res/android"

  10.    android:id="@+id/gridview"

  11.    android:layout_width="fill_parent"

  12.    android:layout_height="fill_parent"

  13.    android:numColumns="auto_fit"

  14.    android:verticalSpacing="10dp"

  15.    android:horizontalSpacing="10dp"

  16.    android:columnWidth="90dp"

  17.    android:stretchMode="columnWidth"

  18.    android:gravity="center"

  19. />

复制代码



night_item.xml布局文件,存放显示控件
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <RelativeLayout

  3.    xmlns:android="http://schemas.android.com/apk/res/android"

  4.    android:layout_height="wrap_content"

  5.    android:paddingBottom="4dip"

  6.    android:layout_width="fill_parent">

  7.    <ImageView android:layout_height="wrap_content"

  8.        android:layout_width="wrap_content"

  9.        android:layout_centerHorizontal="true"

  10.        android:id="@+id/itemImage" >

  11.    </ImageView>

  12.    <TextView android:layout_width="wrap_content"

  13.        android:layout_below="@+id/itemImage"

  14.        android:layout_height="wrap_content"

  15.        android:text="TextView01"

  16.        android:layout_centerHorizontal="true"

  17.        android:id="@+id/itemText">

  18.    </TextView>

  19. </RelativeLayout>

复制代码



strings.xml
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <resources>

  3.    <string name="hello">Hello World, GvActivity!</string>

  4.    <string name="app_name">九宫图</string>

  5.    <string name="test_name1">跳转到TestActivity1</string>

  6.    <string name="test_name2">跳转到TestActivity2</string>

  7.    <string name="test_name3">跳转到TestActivity3</string>

  8. </resources>

复制代码



清单文件
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  3.      package="com.ljq.gv"

  4.      android:versionCode="1"

  5.      android:versionName="1.0">

  6.    <application android:icon="@drawable/icon" android:label="@string/app_name">

  7.        <activity android:name=".GvActivity"

  8.                  android:label="@string/app_name">

  9.            <intent-filter>

  10.                <action android:name="android.intent.action.MAIN" />

  11.                <category android:name="android.intent.category.LAUNCHER" />

  12.            </intent-filter>

  13.        </activity>

  14.        <activity android:name=".TestActivity1" android:label="@string/test_name1"/>

  15.        <activity android:name=".TestActivity2" android:label="@string/test_name2"/>

  16.        <activity android:name=".TestActivity3" android:label="@string/test_name3"/>

  17.    </application>

  18.    <uses-sdk android:minSdkVersion="7" />


  19. </manifest>

复制代码



跳转类TestActivity1、TestActivity2、TestActivity3
  1. package com.ljq.gv;


  2. import android.app.Activity;

  3. import android.os.Bundle;


  4. public class TestActivity1 extends Activity {


  5.    @Override

  6.    public void onCreate(Bundle savedInstanceState) {

  7.        super.onCreate(savedInstanceState);

  8.        //setContentView(R.layout.main);

  9.    }

  10. }


  11. package com.ljq.gv;


  12. import android.app.Activity;

  13. import android.os.Bundle;


  14. public class TestActivity2 extends Activity {


  15.    @Override

  16.    public void onCreate(Bundle savedInstanceState) {

  17.        super.onCreate(savedInstanceState);

  18.        //setContentView(R.layout.main);

  19.    }

  20. }


  21. package com.ljq.gv;


  22. import android.app.Activity;

  23. import android.os.Bundle;


  24. public class TestActivity3 extends Activity {


  25.    @Override

  26.    public void onCreate(Bundle savedInstanceState) {

  27.        super.onCreate(savedInstanceState);

  28.        //setContentView(R.layout.main);

  29.    }

  30. }

复制代码



类GvActivity
  1. package com.ljq.gv;


  2. import java.util.ArrayList;

  3. import java.util.HashMap;


  4. import android.app.Activity;

  5. import android.content.Intent;

  6. import android.os.Bundle;

  7. import android.view.View;

  8. import android.widget.AdapterView;

  9. import android.widget.GridView;

  10. import android.widget.SimpleAdapter;

  11. import android.widget.Toast;

  12. import android.widget.AdapterView.OnItemClickListener;


  13. public class GvActivity extends Activity {

  14.    private String texts[] = null;

  15.    private int images[] = null;


  16.    public void onCreate(Bundle savedInstanceState) {

  17.        super.onCreate(savedInstanceState);

  18.        setContentView(R.layout.main);


  19.        images=new int[]{R.drawable.p1, R.drawable.p2,

  20.                R.drawable.p3, R.drawable.p4,

  21.                R.drawable.p5,R.drawable.p6,

  22.                R.drawable.p7,R.drawable.p8};

  23.        texts = new String[]{ "宫式布局1", "宫式布局2",

  24.                "宫式布局3", "宫式布局4",

  25.                "宫式布局5", "宫式布局6",

  26.                "宫式布局7", "宫式布局8"};


  27.        GridView gridview = (GridView) findViewById(R.id.gridview);

  28.        ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();

  29.        for (int i = 0; i < 8; i++) {

  30.            HashMap<String, Object> map = new HashMap<String, Object>();

  31.            map.put("itemImage", images[i]);

  32.            map.put("itemText", texts[i]);

  33.            lstImageItem.add(map);

  34.        }


  35.        SimpleAdapter saImageItems = new SimpleAdapter(this,

  36.                lstImageItem,// 数据源

  37.                R.layout.night_item,// 显示布局

  38.                new String[] { "itemImage", "itemText" },

  39.                new int[] { R.id.itemImage, R.id.itemText });

  40.        gridview.setAdapter(saImageItems);

  41.        gridview.setOnItemClickListener(new ItemClickListener());

  42.    }


  43.    class ItemClickListener implements OnItemClickListener {

  44.        /**

  45.         * 点击项时触发事件

  46.         *

  47.         * @param parent  发生点击动作的AdapterView

  48.         * @param view 在AdapterView中被点击的视图(它是由adapter提供的一个视图)。

  49.         * @param position 视图在adapter中的位置。

  50.         * @param rowid 被点击元素的行id。

  51.         */

  52.        public void onItemClick(AdapterView<?> parent, View view, int position, long rowid) {

  53.            HashMap<String, Object> item = (HashMap<String, Object>) parent.getItemAtPosition(position);

  54.            //获取数据源的属性值

  55.            String itemText=(String)item.get("itemText");

  56.            Object object=item.get("itemImage");

  57.            Toast.makeText(GvActivity.this, itemText, Toast.LENGTH_LONG).show();


  58.            //根据图片进行相应的跳转

  59.            switch (images[position]) {

  60.            case R.drawable.p1:

  61.                startActivity(new Intent(GvActivity.this, TestActivity1.class));//启动另一个Activity

  62.                finish();//结束此Activity,可回收

  63.                break;

  64.            case R.drawable.p2:

  65.                startActivity(new Intent(GvActivity.this, TestActivity2.class));

  66.                finish();

  67.                break;

  68.            case R.drawable.p3:

  69.                startActivity(new Intent(GvActivity.this, TestActivity3.class));

  70.                finish();

  71.                break;

  72.            }


  73.        }

  74.    }

  75. }

复制代码



运行结果
085612zgmozm1te2gyc2r3.png

分类: android常用控件
标签: android GridView


你可能感兴趣的:(android,GridView)