一:本节引言
<span style="font-size:12px;">GridView是是第二个Adapter类的控件,GridView就是显示网格!他和ListView一样是AbsListView的子类!</span>
二:相关属性
<span style="font-size:12px;"> android:columnWidth:设置列的宽度
android:gravity:组件对其方式
android:horizontalSpacing:水平方向每个单元格的间距
android:verticalSpacing:垂直方向每个单元格的间距
android:numColumns:设置列数
android:stretchMode:设置拉伸模式,可选值如下: none:不拉伸;spacingWidth:拉伸元素间的间隔空隙
columnWidth:仅仅拉伸表格元素自身 spacingWidthUniform:既拉元素间距又拉伸他们之间的间隔空袭</span>
三:使用实例
实现的效果图:
代码实现:
首先是GridView的item布局:
<span style="font-size:12px;"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp">
<ImageView
android:id="@+id/img_icon"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_centerInParent="true"
android:src="@drawable/apple_pic" />
<TextView
android:id="@+id/txt_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/img_icon"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="苹果"
android:textSize="18sp"/>
</RelativeLayout></span>
然后是entity的实体类:Fruit.java:
package com.bzu.bztc.entity;
public class Fruit {
private int fruitId;
private String fruitName;
public Fruit(){
}
public Fruit(int fruitId, String fruitName) {
this.fruitId = fruitId;
this.fruitName = fruitName;
}
public int getFruitId() {
return fruitId;
}
public void setFruitId(int fruitId) {
this.fruitId = fruitId;
}
public String getFruitName() {
return fruitName;
}
public void setFruitName(String fruitName) {
this.fruitName = fruitName;
}
}
最后是MainActivity的布局及java代码
activity_main的布局:
<RelativeLayout 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"
tools:context=".MainActivity" >
<!--numColumns设置每行显示多少个-->
<GridView
android:id="@+id/grid_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="4" >
</GridView>
</RelativeLayout>
MainActivity的Java代码:这里使用的Adapter是直接复用BaseAdapter的
package com.bzu.bztc.gridview;
import java.util.ArrayList;
import com.bzu.bztc.entity.Fruit;
import com.bzu.bztc.entity.MyAdapter;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterViewFlipper;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Context mContext;
private GridView grid_photo;
private BaseAdapter mAdapter;
private ArrayList<Fruit> mData = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
grid_photo = (GridView) findViewById(R.id.grid_photo);
mData = new ArrayList<Fruit>();
mData.add(new Fruit(R.drawable.apple_pic, "苹果"));
mData.add(new Fruit(R.drawable.banana_pic, "香蕉"));
mData.add(new Fruit(R.drawable.cherry_pic, "樱桃"));
mData.add(new Fruit(R.drawable.orange_pic, "橘子"));
mData.add(new Fruit(R.drawable.mango_pic, "芒果"));
mData.add(new Fruit(R.drawable.pear_pic, "梨"));
mData.add(new Fruit(R.drawable.pineapple_pic, "菠萝"));
mData.add(new Fruit(R.drawable.watermelon_pic, "西瓜"));
mData.add(new Fruit(R.drawable.strawberry_pic, "草莓"));
mData.add(new Fruit(R.drawable.grape_pic, "葡萄"));
mAdapter = new MyAdapter<Fruit>(mData, R.layout.fruit_item) {
@Override
public void bindView(ViewHolder holder, Fruit obj) {
holder.setImageResource(R.id.img_icon, obj.getFruitId());
holder.setText(R.id.txt_icon, obj.getFruitName());
}
};
grid_photo.setAdapter(mAdapter);
grid_photo
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(mContext, "你点击了~" + position + "~项", Toast.LENGTH_SHORT).show();
}
});
}
}