GridView的一般用法
? GridView
is a ViewGroup
that displays items in atwo-dimensional,scrollable grid.(这里GroidView作为一个View容器,负责二维显示view控件,和ListView类似),下面通过对Android帮助文档的例子作修改后所完成的效果:
?
??? http://xiaolongque.iteye.com/picture/92946
?
?????????????? <在显示图片的同时显示文字>
???????????? ? 例子中这丑狗的图片可从下载http://developer.android.com/shareables/sample_images.zip
?
?? 好的,首先我们先把图片保存到res/drawable文件夹中
?? 定义以下两个布局文件
?
<?xml version="1.0" encoding="utf-8"?><GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="90dip" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" />
?
?
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"><ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" /><TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test" /></LinearLayout>
?
??? 其中child.xml中定义GridView中每一点的子控件内容
?
??? Activity如下:
?
?
package com.xl;/* * author by Que */import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.TextView;public class HelloGridView extends Activity {private GridView gridView ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); gridView = (GridView)findViewById(R.id.gridview); NewAdapter adapter = new NewAdapter(HelloGridView.this); gridView.setAdapter(adapter); } public class NewAdapter extends BaseAdapter{ ?public final class ViewHolder{ ImageView img; TextView text1; } ?private LayoutInflater layout = null; public NewAdapter(Context context) { //获取上下文对象 this.layout = LayoutInflater.from(context); }@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mThumbIds.length;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder ;if(convertView == null) {holder = new ViewHolder();convertView = layout.inflate(R.layout.child, null);holder.img = (ImageView)convertView.findViewById(R.id.iv);holder.text1 = (TextView)convertView.findViewById(R.id.tv);convertView.setTag(holder);}else {holder = (ViewHolder) convertView.getTag();}holder.img.setImageResource(mThumbIds[position]);//holder.img.setLayoutParams(new GridView.LayoutParams(85,85));holder.img.setScaleType(ImageView.ScaleType.CENTER_INSIDE);holder.img.setPadding(8, 8, 8, 8);return convertView;}private final Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 }; } }?
??? 通过继承BaseAdapter,根据getCount来调用getView对数据进行一一映射。其中
?
convertView = layout.inflate(R.layout.child, null);holder.img = (ImageView)convertView.findViewById(R.id.iv);holder.text1 = (TextView)convertView.findViewById(R.id.tv);
? ? Inflate a new view hierarchy from the specified xml resource.(从一个xml布局文件中获取view层次结构并赋予convertView,通过convertView来实例化ImageView和TextView组件。由此我们可以在里面对布局文件中所包含的所有控件进程初始化处理,如设置事件监听。