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控件 ...

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

ListView,GridView和适配器Adapter不得不说的秘密,欢迎进来看。。。

Android GridView中GridAdapter 用法详解

说到GridView Listview一定会提到他的adapter,现整理如下: main.xml布局里面:

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

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

安卓GridView(自定义适配器)

先贴布局:就放了一个GridView

Android定点刷新Listview(Gridview)Item!实现指定Item刷新

最近在做Launcher,定制了拖拽互换应用图标位置,但在拖拽过程中,由于 notifyDataSetChanged();次数太多,造成拖拽卡顿不流畅,所以用到了定点刷新,只刷新指定的Item。 理论...

Android中的GridView详解

1.GridView实例anzs 本文主要实现如下功能:登陆界面经过通信线程鉴权后返回各种权限,权限对应各种功能模块,打算将各种功能模块以GridView方式显示给用户,GridView中放...
  • he90227
  • he90227
  • 2014年08月03日 10:43
  • 4173

GridView 用法详解

  • 2008年08月28日 20:03
  • 285KB
  • 下载

Android ListView/GridView 中Adapter的用法(1)

Android中的布局控件主要分为简单控件和复杂控件两种,而其中ListView 由于其用法较为复杂抽象,也是学习Android界面编程的一大难点,下面笔者就以多年的开发经验讲解一下ListView ...

android:descendantFocusability用法简析【listview gridview 焦点问题】

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android GridView中GridAdapter 用法详解
举报原因:
原因补充:

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