GridView的功能和用法

在我看来GridView的功能似乎跟ListView的功能相似,同样作为android上的布局控件,GridView被称为网格视图,因为用它来做网格状的布局是非常方便的,比如说九宫格,

先来看看下面的代码:

	GridView gridview ;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.activity_main);
		View view = View.inflate(this, R.layout.activity_main, null);
		setContentView(view);
		
		gridview = (GridView) findViewById(R.id.GridView1);
		
		gridview.setAdapter(new MyAdapter(this));
		
	}

	
	class MyAdapter extends BaseAdapter{

		
		private Context context;
		
		private Integer [] imgs = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
				R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
				R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
		
		public MyAdapter(Context context) {
			this.context = context;
		}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return imgs.length;
		}

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

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

		@Override
		public View getView(int arg0, View arg1, ViewGroup arg2) {
			ImageView imageView;
			
			if(arg1 == null){
				imageView = new ImageView(context);
				imageView.setLayoutParams(new GridView.LayoutParams(75,75));
				imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
				imageView.setPadding(8, 8, 8, 8);
			}
			else{
				imageView = (ImageView) arg1;
			}
			imageView.setImageResource(imgs[arg0]);
			return imageView;
		}
		
	}

有没有觉得GridView的使用跟ListView有点相似呢?

都是用适配器把要布局的内容放到控件中。


GridView的用法有很多种,上面介绍的只是最为简单的一种。


我们还可以向下面一样写代码:

private GridView gridview;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();
		
		for(int i = 0; i < 9;i++){
			Map<String, Object> item = new HashMap<String, Object>();
			item.put("image", R.drawable.ic_launcher);
			
			items.add(item);
		}
		
		SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.gridview, new String []{"image"},new int []{R.id.image});
		
		gridview = (GridView) findViewById(R.id.GridView1);
		
		gridview.setAdapter(adapter);
	}

这两种方法都是达到了同样的效果,但是你们有没有发现,第二种方法其实比第一种方法灵活得多呢。比如我稍微在适配器那里改一下代码:

SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.gridview, new String []{"image","text"},new int []{R.id.image,R.id.text});

然后在List也加上以下代码:

item.put("image", R.drawable.ic_launcher);
			item.put("text", "pic" + i);
			items.add(item);

我们将会看到图片下面会多了文字描述。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值