Android布局之GridView使用展示

原创 2015年11月20日 11:24:13

GridView使用ListAdapter把产生的元素自动驾到布局当中,ListAdapter有个子类是BaseAdapter

.XML中的代码如下

<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"
    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.android_gridview.MainActivity" >

    <GridView
         android:id="@+id/gridview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:columnWidth="90dp"
         android:gravity="center"
         android:horizontalSpacing="10dp"
         android:numColumns="auto_fit"
         android:stretchMode="columnWidth"
         android:verticalSpacing="10dp"
        />
        
</RelativeLayout>

.java中的代码如下

package com.example.android_gridview;

import android.support.v7.app.ActionBarActivity;
import android.app.ActionBar.LayoutParams;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

	private GridView gridView;
	private ImageAdapter imageAdapter;//自定义的适配器

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gridView = (GridView) this.findViewById(R.id.gridview);
		
		// 需要设置适配器,所以声明一个适配器,供使用
		imageAdapter=new ImageAdapter();
		gridView.setAdapter(imageAdapter);
		gridView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "点击了"+position, 1).show();
			}
		});

	}

	//图片资源,还可以用异步任务下载图片,放到此处
	private int[] images = { R.drawable.p1, R.drawable.p2, R.drawable.p3,
			R.drawable.p4, R.drawable.p5, R.drawable.p6, R.drawable.p7,
			R.drawable.p8 };

	// 声明一个适配器
	public class ImageAdapter extends BaseAdapter {

		public ImageAdapter() {
			// TODO Auto-generated constructor stub
		}
		
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return images.length;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return images[position];
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		/**
		 * 在这里面重绘布局,有两种方法:
		 * 第一种,一般控件比较简单的就手工创建View的对象,第二种,图文混排,美化布局就要加载XML文件
		 */
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			ImageView imageView=null;
			if(convertView==null){
				imageView=new ImageView(MainActivity.this);
			}else{
				imageView=(ImageView) convertView;
			}
			/**
			 * 设置GridView的显示的格子的间距
			 * 
			 */
			//这句话写错,会出现闪退的情况,LayoutParams(100,100)里面的参数是设置图片在布局中显示的大小
			imageView.setLayoutParams(new GridView.LayoutParams(200,200));
			imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
			imageView.setPadding(8, 8, 8, 8);
			//加载图片的三种方式:drawable,BitMap,从资源文件中取
			imageView.setImageResource(images[position]);
			return imageView;
		}

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

运行效果图如下


Android——使用GridView制作二维布局界面(行、列分布)

1.GridView的三个关键属性 android:numColumns="auto_fit"       每一行显示多少列 android:horizontalSpacing="10dp" ...
  • S415X
  • S415X
  • 2016年08月10日 12:28
  • 134

Android高仿支付宝gridview网格布局

  • 2016年03月07日 15:41
  • 1.45MB
  • 下载

android--(布局图文混排GridView、BaseAdapter适配器)

activity: /** * 自定义适配器 * * 1.创建一个类,继承BaseAdapter类 * 2.实现4个方法 * getCount:获取要显示的选项总数 * * ...

android gridview布局,实现长按某一个,所有项都显示删除的图标

最近一直忙着项目开发,有段时间没有写博文了,今天想跟大家分享的是长按gridview中的某一项显示删除图标,此时点击某项便可删除,再长按取消删除图标。 gridview的布局文件如下: http:...

android首页布局和仿美团gridview轮播

  • 2016年12月09日 22:55
  • 8.59MB
  • 下载

android gridview布局,实现长按某一个,所有项都显示删除的图标

最近一直忙着项目开发,有段时间没有写博文了,今天想跟大家分享的是长按gridview中的某一项显示删除图标,此时点击某项便可删除,再长按取消删除图标。 gridview的布局文件如下: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android布局之GridView使用展示
举报原因:
原因补充:

(最多只允许输入30个字)