GridView(网络视图)的基本使用

一:本节引言

<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();
					}

				});

	}
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值