GridView使用的一些方法

在android中GridView也是经常使用,使用Gridview大致上可以分为以下两种

第一种方法如下:

使用GridView显示图片,然后点击后跳转显示一个大的图片

源码下载地址:


实现的代码如下:

布局如下:

gridview.xml

<GridView  
        android:id="@+id/gridview01"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:columnWidth="90dip"  
        android:gravity="center"  
        android:horizontalSpacing="5dip"  
        android:numColumns="3"  
        android:padding="10dip"  
        android:stretchMode="columnWidth"  
        android:verticalSpacing="5dip" />  
gridviewimage.xml

<?xml version="1.0" encoding="utf-8"?>  
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:orientation="vertical" >  
  
    <ImageView  
        android:id="@+id/imagegrid"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center" />  
  
</FrameLayout>  

实现的代码如下:

GridViewDemoActivity.java

package com.nyist.net;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
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 GridViewDemoActivity extends Activity {

	int[] images = { R.drawable.image1, R.drawable.image2, R.drawable.image3,
			R.drawable.image4, R.drawable.image5, R.drawable.image6,
			R.drawable.image7, R.drawable.image8, R.drawable.image9,
			R.drawable.image5, R.drawable.image6, R.drawable.image7,
			R.drawable.image8

	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.gridview);
		GridView gridView1 = (GridView) findViewById(R.id.gridview01);
		gridView1.setAdapter(new ImageAdapter(this));
		gridView1.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				Toast.makeText(GridViewDemoActivity.this,
						"你点击了第" + arg2 + "张图片", Toast.LENGTH_SHORT).show();
				// 实现跳转,并传递点击位置的图片
				Intent intent = new Intent(GridViewDemoActivity.this,
						GridViewImage.class);
				Bundle bundle = new Bundle();
				bundle.putInt("image", images[arg2 % images.length]);
				intent.putExtras(bundle);
				startActivity(intent);

			}
		});

	}

	public class ImageAdapter extends BaseAdapter {
		Context myContext;

		public ImageAdapter(Context myContext) {
			super();
			this.myContext = myContext;
		}

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

		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return position;
		}

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

		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub

			ImageView image;
			if (convertView == null) {
				image = new ImageView(myContext);
				image.setLayoutParams(new GridView.LayoutParams(80, 80));
				image.setScaleType(ImageView.ScaleType.FIT_CENTER);

			} else {
				image = (ImageView) convertView;
			}
			image.setImageResource(images[position]);

			return image;
		}

	}
}


GridViewImage.java

package com.nyist.net;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;

public class GridViewImage extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.gridviewimage);
		ImageView imageView = (ImageView) findViewById(R.id.imagegrid);

		Bundle bundle = getIntent().getExtras();
		imageView.setImageResource(bundle.getInt("image"));

	}

}

第二种GridView的使用方法如下:

实现的效果如下:

源代码下载地址:点击打开链接



 实现的布局如下:

gridview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     android:background="@android:color/white"
     android:padding="10dp"
    
    android:orientation="vertical" >
<GridView
    android:gravity="center_horizontal"
        android:id="@+id/gridview01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:columnWidth="90dip"
        android:horizontalSpacing="5dip"
        android:numColumns="3"
        android:padding="10dip"
        android:stretchMode="columnWidth"
        android:verticalSpacing="5dip"
         />
</LinearLayout>

gridview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/grid_item_image"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <TextView
        android:id="@+id/grid_item_text"
         android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ddd" />

</LinearLayout>
实现的方法如下:

package com.nyist.activity;

import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
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 GridViewDemoActivity extends Activity {
	int[] images = { R.drawable.alarm_icon_birthday,
			R.drawable.alarm_icon_count_back, R.drawable.alarm_icon_getup,
			R.drawable.alarm_icon_tryst, R.drawable.alarm_icon_shift,
			R.drawable.alarm_icon_memorial_day };
	String[] array = { "生日提醒", "倒计时", "起床闹钟", "健身提醒", "晨读提醒", "猜你喜欢" };

	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.gridview);
		GridView gridView = (GridView) findViewById(R.id.gridview01);

		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < array.length; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("Imageitem", images[i]);
			map.put("Textitem", array[i]);
			list.add(map);
		}

		SimpleAdapter simpleAdapter = new SimpleAdapter(this, list,// 数据源
				R.layout.gridview_item,// 显示布局
				new String[] { "Imageitem", "Textitem" }, new int[] {
						R.id.grid_item_image, R.id.grid_item_text });
		gridView.setAdapter(simpleAdapter);
		gridView.setOnItemClickListener(new ItemClickListener());
	}

	class ItemClickListener implements OnItemClickListener {
		/**
		 * @param parent
		 *            发生点击动作的AdapterView
		 * @param view
		 *            在AdapterView中被点击的视图(它是由adapter提供的一个视图)。
		 * @param position
		 *            视图在adapter中的位置。
		 * @param rowid
		 *            被点击元素的行id。
		 */
		public void onItemClick(AdapterView<?> parent, View view, int position,
				long rowid) {
			HashMap<String, Object> item = (HashMap<String, Object>) parent
					.getItemAtPosition(position);
			// 获取数据源的属性值
			String Textitem = (String) item.get("Textitem");
			Object object = item.get("Imageitem");
			Toast.makeText(GridViewDemoActivity.this, Textitem,
					Toast.LENGTH_LONG).show();

			// 根据图片进行相应的跳转
			switch (images[position]) {
			case R.drawable.alarm_icon_birthday:
				startActivity(new Intent(GridViewDemoActivity.this,
						birthday.class));// 启动另一个Activity
				// finish();// 结束此Activity,可回收
				break;
			case R.drawable.alarm_icon_count_back:
				startActivity(new Intent(GridViewDemoActivity.this,
						count_back.class));
				// finish();
				break;
			case R.drawable.alarm_icon_getup:
				startActivity(new Intent(GridViewDemoActivity.this, getup.class));
				// finish();
				break;
			case R.drawable.alarm_icon_memorial_day:
				startActivity(new Intent(GridViewDemoActivity.this,
						MemorialDay.class));// 启动另一个Activity
				// finish();// 结束此Activity,可回收
				break;
			case R.drawable.alarm_icon_shift:
				startActivity(new Intent(GridViewDemoActivity.this, Shift.class));
				// finish();
				break;
			case R.drawable.alarm_icon_tryst:
				startActivity(new Intent(GridViewDemoActivity.this, Tryst.class));
				// finish();
				break;

			}

		}
	}
}




posted @   程序员Android的博客  阅读(60)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示