android GridView學(xué)習(xí)筆記
第一步:新建項(xiàng)目
咳咳,這個(gè)就不多說了,我這里用的是API級別是google APIs:14
第二部:視圖層開發(fā)
我們這里直接修改main.xml文件,里面主要放上一個(gè)GridView控件。
其中android:numColumns表示一行顯示多少列,也可填寫“auto_fit”,表示自動(dòng)適應(yīng)。
然后我們新建一個(gè)item.xml用來表示gridView中,每一個(gè)項(xiàng)對應(yīng)的視圖。
這里需要為ImageView和TextView設(shè)置ID,在后面會(huì)用到
第三步:activity開發(fā)
廢話就不多說了,直接貼代碼,我把代碼注釋都寫得詳細(xì)一些
GridViewActivity.java
package?org.example.gridview; import?java.util.ArrayList; import?java.util.HashMap; import?java.util.List; import?android.app.Activity; import?android.os.Bundle; import?android.view.View; import?android.widget.AdapterView; import?android.widget.GridView; import?android.widget.ListAdapter; import?android.widget.SimpleAdapter; import?android.widget.Toast; public?class?GridViewActivity?extends?Activity?{ ????//?gridView控件 ????private?GridView?gridView; ????//?假設(shè)顯示8個(gè)item,這對應(yīng)著8個(gè)item的顯示名稱 ????private?String[]?itemTexts?=?new?String[]?{?"搜索",?"文件管理",?"下載管理",?"全屏",?"網(wǎng)址",?"加入書簽",?"分享頁面",?"關(guān)閉"?}; ????//?這對應(yīng)著8個(gè)item的圖片,這里我偷懶了,統(tǒng)一用了系統(tǒng)自帶的圖片 ????private?int[]?itemImages?=?new?int[]?{?R.drawable.ic_launcher,?R.drawable.ic_launcher,?R.drawable.ic_launcher, ????????????R.drawable.ic_launcher,?R.drawable.ic_launcher,?R.drawable.ic_launcher,?R.drawable.ic_launcher, ????????????R.drawable.ic_launcher?}; ????@Override ????public?void?onCreate(Bundle?savedInstanceState)?{ ????????super.onCreate(savedInstanceState); ????????setContentView(R.layout.main); ????????//?初始化參數(shù) ????????gridView?=?(GridView)?findViewById(R.id.gridView); ????????//?設(shè)置數(shù)據(jù)匹配器 ????????gridView.setAdapter(getAdapter()); ????????//?只是顯示是沒用用的,這里我們在添加單擊item時(shí)的監(jiān)聽事件 ????????gridView.setOnItemClickListener(new?AdapterView.OnItemClickListener()?{ ????????????@Override ????????????public?void?onItemClick(AdapterView?arg0,?View?arg1,?int?index,?long?arg3)?{ ????????????????Toast.makeText(GridViewActivity.this,?index?+?"",?2).show(); ????????????} ????????}); ????} ????/** ?????*?DOC?獲取數(shù)據(jù)匹配器 ?????*/ ????private?ListAdapter?getAdapter()?{ ????????//?該list用來存放每一個(gè)item對應(yīng)的文字和圖片 ????????List<HashMap>?list?=?new?ArrayList<HashMap>(); ????????for?(int?i?=?0;?i?<?itemTexts.length;?i++)?{ ????????????HashMapmap?=?new?HashMap(); ????????????map.put("itemText",?itemTexts[i]); ????????????map.put("itemImage",?itemImages[i]); ????????????list.add(map); ????????} ????????//?該構(gòu)造函數(shù),這里說明一下 ????????//?new?SimpleAdapter(Context,?上面的list,每一個(gè)項(xiàng)對應(yīng)的itemView,itemView里顯示的所有信息(要和list里的map里的名稱一樣)?, ????????//?itemView里控件id); ????????SimpleAdapter?simpleAdapter?=?new?SimpleAdapter(this,?list,?R.layout.item,?new?String[]?{?"itemText",?"itemImage"?}, ????????????????new?int[]?{?R.id.imageText,?R.id.imageView?}); ????????return?simpleAdapter; ????} }