GirdView和listView很类似,不过就是布局有些差异,其他都没什么。
废话不多说,直接上代码。(充分体现实干精神有木有。。)
先说说它的效果图
----------------------我是华丽的分割线---------------------------------------------------------------------
首先布局文件,在activity_main.xml中
<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:orientation="vertical"
tools:context="com.example.gridviewdemo.MainActivity" >
<!-- gravity居中显示,
ndroid:horizontalSpacing="1pt" 表示每个item水平间隔的距离,
android:verticalSpacing="1pt" 表示每个item垂直间隔的距离
android:numColumns="4" 表示一行有四个Item
-->
<GridView
android:id="@+id/main_gv"
android:layout_width="match_parent"
android:layout_height="254dp"
android:gravity="center"
android:horizontalSpacing="1pt"
android:numColumns="4"
android:verticalSpacing="1pt" >
</GridView>
<ImageView
android:id="@+id/main_iv"
android:layout_width="match_parent"
android:layout_height="217dp"
android:layout_alignBottom="@id/main_gv" />
</LinearLayout>
这里是activity.java...
package com.example.gridviewdemo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private GridView main_gv;
private ImageView main_iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.获取UI控件id
initView();
// 2.初始化数据
initData();
}
private void initData() {
List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
final int[] drawable_id = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.e,
R.drawable.d, R.drawable.f, R.drawable.g, R.drawable.h,
R.drawable.i, R.drawable.j, R.drawable.k, R.drawable.l,
};
//这里是在适配器里统计图片的数目及提供图片的position
for (int i = 0;i <drawable_id.length; i++ ) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("image", drawable_id[i]);
listItems.add(map);
}
// 3.到drawable加载几张图片,设置设配器,this, null, 0, null, null这里5个参数,它要什么,我给什么
// SimpleAdapter sa = new SimpleAdapter(this, listItems, R.layout.cell(这里随便写个布局),
// new String[]{"image"}(可以写死), new int[]{R.id.image1}(可以写死));
SimpleAdapter sa = new SimpleAdapter(this, listItems, R.layout.cell,
new String[]{"image"}, new int[]{R.id.image1});
//4.GridView设置适配器
main_gv.setAdapter(sa);
//5.设置点击事件
main_gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> aview, View view, int position,
long id) {
//设置图片的来源
main_iv.setImageResource(drawable_id[position]);
}
});
}
private void initView() {
main_gv = (GridView) findViewById(R.id.main_gv);
main_iv = (ImageView) findViewById(R.id.main_iv);
}
}