Android之GridView

本文介绍了如何使用GridView进行列表显示,并实现点击后弹出图片与信息的功能。包括数据绑定、适配器配置及事件处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天继续Android学习之旅之GridView的记录,主要包括两个方面:1.列表显示Grid;2.点击弹出图片和信息。

        看了看手机,只看到美图秀秀有点GridView的影子,截图如下,下文就仿下美图秀秀的效果。


        1.列表显示Grid

        首先GridView绑定数据的方式跟复杂ListView差不多,也是三步1.获得数据列表;2.填充数据适配器;3.设置GridView的适配器;

        首先提供一个数据模板,数据模板menu_template.xml代码如下:

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

    <ImageView
        android:id="@+id/menuImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp" />

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

</LinearLayout>
        后台代码如下:

private String menuText[] = new String[] { "qq1", "qq2", "qq3", "qq4",
		"qq5", "qq6", "qq7", "qq8", "qq9", "qq10", "qq11", "qq12" };
private int[] menuImage = new int[] { R.drawable.q1, R.drawable.q2,
		R.drawable.q3, R.drawable.q4, R.drawable.q5, R.drawable.q6,
		R.drawable.q7, R.drawable.q8, R.drawable.q9, R.drawable.q10,
		R.drawable.qq11, R.drawable.qq12 };
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
private GridView menuGrid = null;
private SimpleAdapter simpleAdapter = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	this.menuGrid = (GridView) super.findViewById(R.id.menuGrid);

	for (int i = 0, length = menuImage.length; i < length; i++) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("menuImage", String.valueOf(menuImage[i]));
		map.put("menuName", menuText[i]);
		list.add(map);
	}
	this.simpleAdapter = new SimpleAdapter(this, list,
			R.layout.menu_template,
			new String[] { "menuImage", "menuName" }, new int[] {
					R.id.menuImage, R.id.menuName });
	this.menuGrid.setAdapter(simpleAdapter);
	this.menuGrid.setOnItemClickListener(new OnItemClickListenerImpl());
}
        运行结果如下:

        2.点击弹出图片和信息

        点击GridView项触发相应的事件,这边简单的将图标和菜单名弹出来,事件代码如下:

private class OnItemClickListenerImpl implements OnItemClickListener {

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id) {
		ImageView img = new ImageView(MainActivity.this);
		img.setScaleType(ImageView.ScaleType.CENTER);
		img.setLayoutParams(new LinearLayout.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
		Map<String, String> map 
				= (Map<String, String>) MainActivity.this.simpleAdapter
				.getItem(position);
		img.setImageResource(Integer.valueOf(map.get("menuImage")));
		String menuName = map.get("menuName");
		Dialog dialog = new AlertDialog.Builder(MainActivity.this)
				.setIcon(R.drawable.q0)
				.setTitle(menuName)
				.setView(img)
				.setNegativeButton("确定",
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which) {
								// TODO Auto-generated method stub

							}
						}).create();
		dialog.show();

	}
}
        运行结果如下:

        总的来说在学了ListView之后,GridView还是很简单的。


        项目源码下载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值