下面是效果图:
下面是Layout的代码:
<?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" >
<!--
android:numColumns="":每一行显示多少列
android:horizontalSpacing="":两列之间的间距
android:verticalSpacing="":两行之间的间距
-->
<GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
>
</GridView>
</LinearLayout>
下面是Activity的代码:
package gridview2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.example.tab.R;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class gridview1 extends ActionBarActivity{
private GridView gridView;
private List<Map<String,Object>>list1;
//加载图片源
private int[] icon={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,
R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,};
//为每个图片起名字
private String[] iconName = {"图片","图片","图片","图片","图片",
"图片","图片","图片","图片","图片","图片","图片",};
private SimpleAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
gridView = (android.widget.GridView)findViewById(R.id.gridView);
//1、准备数据源
//2、新建适配器(SimpleAdapter)
//3、GridView加载适配器
//4、GridView配置事件监听器(OnItemClickLister)
list1 = new ArrayList<Map<String,Object>>();
//getData();
//R.layout.gridview_item:SimpleAdapter所关联的布局
adapter = new SimpleAdapter(this, getData(), R.layout.gridview_item, new String[]{"image","text"},new int[] {R.id.image,R.id.tv1});
gridView.setAdapter(adapter);
//对gridView进行点击事件
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "我是"+iconName[position], 1).show();
}
});
}
//获取数据源
private List<Map<String,Object>> getData() {
// TODO Auto-generated method stub
for(int i=0;i<icon.length;i++){
Map<String,Object> map = new HashMap<String,Object>();
map.put("image", icon[i]);
map.put("text", iconName[i]);
list1.add(map);
}
return list1;
}
}
下面是关于SimpleAdapter关联的布局样式:
<?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"
android:gravity="center"
>
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_launcher"
/>
<TextView
android:id="@+id/tv1"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文字"
/>
</LinearLayout>