GridView用于在界面上按行、列分布的方式来显示多个组件。
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:paddingBottom
=
"@dimen/activity_vertical_margin"
android:paddingLeft
=
"@dimen/activity_horizontal_margin"
android:paddingRight
=
"@dimen/activity_horizontal_margin"
android:paddingTop
=
"@dimen/activity_vertical_margin"
tools:context
=
"com.example.gridview.MainActivity"
>
<
GridView
android:id
=
"@+id/gridview"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:numColumns
=
"auto_fit"
//每行显示多少列 auto_fit 自动适应
android:horizontalSpacing
=
"10dp"
//两列之间的间距
android:verticalSpacing
=
"10dp"
//两行之间的间距
></
GridView
>
</
LinearLayout
>
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
>
<
ImageView
android:id
=
"@+id/image"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:background
=
"@drawable/ic_launcher"
/>
<
TextView
android:id
=
"@+id/text"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:hint
=
"@string/hello_world"
/>
</
LinearLayout
>
public
class
MainActivity
extends
Activity
implements
OnItemClickListener {
private
GridView
gridView
;
private
List<Map<String, Object>>
data
;
private
int
[]
icon
={};
private
String[]
iconname
={};
private
SimpleAdapter
simpleAdapter
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main
);
gridView
=(GridView) findViewById(R.id.
gridview
);
//准备数据源
//新建适配器(simpleAdapter)
//gridview 加载适合配器
//gridview 配置事件监听器(Onitemclicklistener )
data
=
new
ArrayList<Map<String, Object>>();
getdata();
simpleAdapter
=
new
SimpleAdapter(
this
, getdata(), R.layout.
item
,
new
String[]{
"image"
,
"text"
},
new
int
[]{R.id.
image
,R.id.
text
});
gridView
.setAdapter(
simpleAdapter
);
//监听器每一列图标的点击事件。
gridView
.setOnItemClickListener(
this
);
}
private
List<Map<String, Object>> getdata() {
Map<String, Object> map=
new
HashMap<String,Object>();
for
(
int
i = 0; i <
icon
.
length
; i++) {
map.put(
"image"
,
icon
[i]);
map.put(
"text"
,
iconname
[i]);
}
data
.add(map);
return
data
;
}
@Override
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
Toast. makeText(
this
, position, Toast.
LENGTH_LONG
).show();
}
}