`
Que
  • 浏览: 15389 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

GridView的一般用法

阅读更多

  GridView is a ViewGroup that displays items in a two-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);
    			
    		}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return mThumbIds.length;
		}

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

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

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			ViewHolder 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组件。由此我们可以在里面对布局文件中所包含的所有控件进程初始化处理,如设置事件监听。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics