Android GridView中GridAdapter 用法详解

转载 2015年11月19日 09:52:03

说到GridView Listview一定会提到他的adapter,现整理如下:

main.xml布局里面:

  1. <GridView  
  2.     android:id="@+id/grid"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:columnWidth="70dp"  
  6.     android:numColumns="auto_fit"   
  7.     android:verticalSpacing="10dp"   
  8.     android:horizontalSpacing="10dp"  
  9.     android:stretchMode="columnWidth"  
  10.     android:gravity="center"  
  11.     />  

gridview_item.xml:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_height="wrap_content"   
  4.     android:layout_width="wrap_content"  
  5.     android:orientation="vertical"  
  6.     android:gravity="center"  
  7.     android:layout_gravity="center"  
  8.     >  
  9.     <LinearLayout   
  10.         android:layout_height="wrap_content"   
  11.         android:layout_width="wrap_content"  
  12.         android:orientation="vertical"  
  13.         android:gravity="center"  
  14.         android:layout_gravity="center">  
  15.         <ImageView   
  16.             android:id="@+id/grid_icon"  
  17.             android:layout_height="80dip"   
  18.             android:layout_width="80dip"  
  19.             android:gravity="center"  
  20.             android:layout_gravity="center"   
  21.             >  
  22.         </ImageView>  
  23.         <TextView   
  24.             android:id="@+id/grid_name"  
  25.             android:layout_width="wrap_content"  
  26.             android:layout_height="wrap_content"  
  27.             android:singleLine="true"  
  28.             android:gravity="center"  
  29.             android:layout_gravity="center"  
  30.             android:textSize="13px"  
  31.             android:layout_marginTop="4dip"  
  32.             >  
  33.         </TextView>  
  34.     </LinearLayout>   
  35. </FrameLayout>    

java 代码:

  1. GridView grid = (GridView) findViewById(R.id.grid);  
  2. grid.setAdapter(new GridAdapter(this, mNameList, mDrawableList));  

GridAdapter.java类:

  1. package com.android.test;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import android.content.Context;  
  6. import android.graphics.drawable.Drawable;  
  7. import android.view.Gravity;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.view.ViewGroup;  
  11. import android.widget.BaseAdapter;  
  12. import android.widget.ImageView;  
  13. import android.widget.LinearLayout;  
  14. import android.widget.TextView;  
  15.   
  16. public class GridAdapter extends BaseAdapter {  
  17.     private ArrayList<String> mNameList = new ArrayList<String>();  
  18.     private ArrayList<Drawable> mDrawableList = new ArrayList<Drawable>();  
  19.     private LayoutInflater mInflater;  
  20.     private Context mContext;  
  21.     LinearLayout.LayoutParams params;  
  22.   
  23.     public GridAdapter(Context context, ArrayList<String> nameList, ArrayList<Drawable> drawableList) {  
  24.         mNameList = nameList;  
  25.         mDrawableList = drawableList;  
  26.         mContext = context;  
  27.         mInflater = LayoutInflater.from(context);  
  28.           
  29.         params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);  
  30.         params.gravity = Gravity.CENTER;  
  31.     }  
  32.   
  33.     public int getCount() {  
  34.         return mNameList.size();  
  35.     }  
  36.   
  37.     public Object getItem(int position) {  
  38.         return mNameList.get(position);  
  39.     }  
  40.   
  41.     public long getItemId(int position) {  
  42.         return position;  
  43.     }  
  44.   
  45.     public View getView(int position, View convertView, ViewGroup parent) {  
  46.         ItemViewTag viewTag;  
  47.           
  48.         if (convertView == null)  
  49.         {  
  50.             convertView = mInflater.inflate(R.layout.gridview_item, null);  
  51.               
  52.             // construct an item tag  
  53.             viewTag = new ItemViewTag((ImageView) convertView.findViewById(R.id.grid_icon), (TextView) convertView.findViewById(R.id.grid_name));  
  54.             convertView.setTag(viewTag);  
  55.         } else  
  56.         {  
  57.             viewTag = (ItemViewTag) convertView.getTag();  
  58.         }  
  59.           
  60.         // set name  
  61.         viewTag.mName.setText(mNameList.get(position));  
  62.           
  63.         // set icon  
  64.         viewTag.mIcon.setBackgroundDrawable(mDrawableList.get(position));  
  65.         viewTag.mIcon.setLayoutParams(params);  
  66.         return convertView;  
  67.     }  
  68.       
  69.     class ItemViewTag  
  70.     {  
  71.         protected ImageView mIcon;  
  72.         protected TextView mName;  
  73.           
  74.         /** 
  75.          * The constructor to construct a navigation view tag 
  76.          *  
  77.          * @param name 
  78.          *            the name view of the item 
  79.          * @param size 
  80.          *            the size view of the item 
  81.          * @param icon 
  82.          *            the icon view of the item 
  83.          */  
  84.         public ItemViewTag(ImageView icon, TextView name)  
  85.         {  
  86.             this.mName = name;  
  87.             this.mIcon = icon;  
  88.         }  
  89.     }  
  90.   
  91. }  


到此,adapter的使用就算结束,效果图如下:


Android常用控件之GridView使用BaseAdapter

我们可以为GridView添加自定义的Adapter,首先看下用自定义Adapter的显示效果 在布局文件main.xml文件中定义一个GridView控件 ...
  • deng0zhaotai
  • deng0zhaotai
  • 2013年09月17日 19:31
  • 18429

ListView,GridView和适配器Adapter不得不说的秘密

ListView,GridView和适配器Adapter不得不说的秘密,欢迎进来看。。。
  • j06100610
  • j06100610
  • 2015年08月14日 23:36
  • 2565

Android 快速开发系列 打造万能的ListView GridView 适配器

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自【张鸿洋的博客】1、概述相信做Android开发的写得最...
  • lmj623565791
  • lmj623565791
  • 2014年08月28日 21:32
  • 137342

自定义Adapter将图片在GridView中显示

首先来看一下效果图: 这是使用真机调试的效果图,下面来看如何实现。 第一步:在activity_main.xml中写入GridView,如下: 第二步:在ActivityMain.java中写如下...
  • sinat_29767257
  • sinat_29767257
  • 2015年08月19日 23:39
  • 907

listview gridview adapter的使用

  • 2012年08月16日 19:40
  • 122KB
  • 下载

Android中适用于ListView、GridView等组件的通用Adapter

今天随便逛逛CSDN,看到主页上推荐了一篇文章Android 快速开发系列 打造万能的ListView GridView 适配器,刚好这两天写项目自己也封装了类似的CommonAdapter,以前也在...
  • bboyfeiyu
  • bboyfeiyu
  • 2014年08月30日 21:41
  • 4783

gridview与adapter使用实例

1、activity public class RecordActivity extends BaseActivity implements OnClickListener { private C...
  • zxg19
  • zxg19
  • 2015年05月27日 00:09
  • 687

GridView用自定义Adapter

  • 2013年09月17日 19:04
  • 3.89MB
  • 下载

Android GridView中GridAdapter 用法详解

说到GridView Listview一定会提到他的adapter,现整理如下: main.xml布局里面:
  • chaihuasong
  • chaihuasong
  • 2012年06月06日 16:45
  • 13488

安卓GridView(自定义适配器)

先贴布局:就放了一个GridView
  • summer_ck
  • summer_ck
  • 2016年03月25日 17:56
  • 4454
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android GridView中GridAdapter 用法详解
举报原因:
原因补充:

(最多只允许输入30个字)