GridView的用法

本文详细介绍了一个简单的GridView应用实例,从布局文件的配置到Java代码的实现,包括如何加载图片资源并为GridView设置适配器,以及如何响应点击事件来改变图片。

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

GirdView和listView很类似,不过就是布局有些差异,其他都没什么。

废话不多说,直接上代码。(充分体现实干精神有木有。。)



先说说它的效果图














----------------------我是华丽的分割线---------------------------------------------------------------------





首先布局文件,在activity_main.xml中

<LinearLayout 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:orientation="vertical"
    tools:context="com.example.gridviewdemo.MainActivity" >

    <!-- gravity居中显示,
     ndroid:horizontalSpacing="1pt"   表示每个item水平间隔的距离, 
     android:verticalSpacing="1pt"    表示每个item垂直间隔的距离
     android:numColumns="4"           表示一行有四个Item
    -->
    <GridView
        android:id="@+id/main_gv"
        android:layout_width="match_parent"
        android:layout_height="254dp"
        android:gravity="center"
        android:horizontalSpacing="1pt"
        android:numColumns="4"
        android:verticalSpacing="1pt" >
    </GridView>

    <ImageView
        android:id="@+id/main_iv"
        android:layout_width="match_parent"
        android:layout_height="217dp"
        android:layout_alignBottom="@id/main_gv" />

</LinearLayout>



这里是activity.java...

package com.example.gridviewdemo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

	private GridView main_gv;
	private ImageView main_iv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 1.获取UI控件id
		initView();

		// 2.初始化数据
		initData();

	}

	private void initData() {

		List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();

		final int[] drawable_id = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.e,
				R.drawable.d, R.drawable.f, R.drawable.g, R.drawable.h,
				R.drawable.i, R.drawable.j, R.drawable.k, R.drawable.l,
		};
		
		
		//这里是在适配器里统计图片的数目及提供图片的position
		for (int i = 0;i <drawable_id.length; i++ ) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("image", drawable_id[i]);
			listItems.add(map);
		}
		
		
		// 3.到drawable加载几张图片,设置设配器,this, null, 0, null, null这里5个参数,它要什么,我给什么
	//	SimpleAdapter sa = new SimpleAdapter(this, listItems, R.layout.cell(这里随便写个布局),
	//			new String[]{"image"}(可以写死), new int[]{R.id.image1}(可以写死));
		SimpleAdapter sa = new SimpleAdapter(this, listItems, R.layout.cell,
				new String[]{"image"}, new int[]{R.id.image1});

		
		//4.GridView设置适配器
		main_gv.setAdapter(sa);
		
		
		
		//5.设置点击事件
		main_gv.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> aview, View view, int position,
					long id) {
				//设置图片的来源
				main_iv.setImageResource(drawable_id[position]);
			}
			
		});
	}
	
	private void initView() {
		main_gv = (GridView) findViewById(R.id.main_gv);
		main_iv = (ImageView) findViewById(R.id.main_iv);

	}

}






### GridView 使用教程 #### Android 中的 GridView 实现方式 在 Android 开发中,`GridView` 是一种用于显示二维滚动网格视图的强大组件。该控件通常与 `Adapter` 配合工作来填充数据项[^1]。 为了更好地理解如何使用 `GridView` ,这里提供了一个简单的例子: ```java // 定义适配器类继承 BaseAdapter 或其他 Adapter 类型 public class ImageAdapter extends BaseAdapter { private Context mContext; public ImageAdapter(Context c) { mContext = c; } @Override public int getCount() { return mThumbIds.length; // 返回图片数量 } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } // 创建新 View (被调用次数等于可见项目总数) @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } // 参考图像资源 ID 数组 private Integer[] mThumbIds = {...}; } ``` 接着,在布局文件中定义 `GridView` 组件并设置其属性: ```xml <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:columnWidth="90dp" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center"/> ``` 最后,在 Activity 中初始化 `GridView` 并绑定自定义适配器: ```java GridView gridView = findViewById(R.id.gridView); gridView.setAdapter(new ImageAdapter(this)); // 设置点击事件监听器 gridView.setOnItemClickListener((parent, v, position, id) -> Toast.makeText( getApplicationContext(), "Grid Item Clicked", Toast.LENGTH_SHORT).show()); ``` #### WPF 中的 GridView 应用场景 对于 Windows Presentation Foundation(WPF),`GridView` 主要应用于 `ListView` 控件内作为视图模式之一,允许开发者构建复杂的数据展示表格[^2]。 下面是一个基本的例子展示了怎样配置 `ListView` 来呈现带有列头的信息列表: ```xml <ListView> <ListView.View> <GridView> <!-- 添加多个 GridViewColumn --> <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" /> <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" /> <GridViewColumn Header="City" DisplayMemberBinding="{Binding City}" /> </GridView> </ListView.View> </ListView> ``` 通过这种方式,可以很容易地定制每一列的内容以及外观样式,从而满足不同业务需求下的数据显示要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值