灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3742回复:0

Android GridView中GridAdapter用法详解

楼主#
更多 发布于:2012-09-06 14:03

说到GridView Listview一定会提到他的adapter,现整理如下:
main.xml布局里面:
[html] <GridView
    Android:id="@+id/grid"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:columnWidth="70dp"
    Android:numColumns="auto_fit"  
    Android:verticalSpacing="10dp"  
    Android:horizontalSpacing="10dp"
    AndroidtretchMode="columnWidth"
    Android:gravity="center"
    />
<GridView
Android:id="@+id/grid"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:columnWidth="70dp"
Android:numColumns="auto_fit"
Android:verticalSpacing="10dp"
Android:horizontalSpacing="10dp"
AndroidtretchMode="columnWidth"
Android:gravity="center"
/>
gridview_item.xml:
[html] <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_height="wrap_content"  
    Android:layout_width="wrap_content"
    Android:orientation="vertical"
    Android:gravity="center"
    Android:layout_gravity="center"
    >
    <LinearLayout  
        Android:layout_height="wrap_content"  
        Android:layout_width="wrap_content"
        Android:orientation="vertical"
        Android:gravity="center"
        Android:layout_gravity="center">
        <ImageView  
            Android:id="@+id/grid_icon"
            Android:layout_height="80dip"  
            Android:layout_width="80dip"
            Android:gravity="center"
            Android:layout_gravity="center"  
            >
        </ImageView>
        <TextView  
            Android:id="@+id/grid_name"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            AndroidingleLine="true"
            Android:gravity="center"
            Android:layout_gravity="center"
            Android:textSize="13px"
            Android:layout_marginTop="4dip"
            >
        </TextView>
    </LinearLayout>  
</FrameLayout>  
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:orientation="vertical"
Android:gravity="center"
Android:layout_gravity="center"
>
<LinearLayout
  Android:layout_height="wrap_content"
  Android:layout_width="wrap_content"
  Android:orientation="vertical"
  Android:gravity="center"
  Android:layout_gravity="center">
  <ImageView
   Android:id="@+id/grid_icon"
   Android:layout_height="80dip"
   Android:layout_width="80dip"
   Android:gravity="center"
   Android:layout_gravity="center"
   >
  </ImageView>
  <TextView
   Android:id="@+id/grid_name"
   Android:layout_width="wrap_content"
   Android:layout_height="wrap_content"
   AndroidingleLine="true"
   Android:gravity="center"
   Android:layout_gravity="center"
   Android:textSize="13px"
   Android:layout_marginTop="4dip"
   >
  </TextView>
</LinearLayout>
</FrameLayout>  
java 代码:
[java] GridView grid = (GridView) findViewById(R.id.grid);
grid.setAdapter(new GridAdapter(this, mNameList, mDrawableList));
GridView grid = (GridView) findViewById(R.id.grid);
grid.setAdapter(new GridAdapter(this, mNameList, mDrawableList));
GridAdapter.java类:
[java] package com.Android.test;

import java.util.ArrayList;

import Android.content.Context;
import Android.graphics.drawable.Drawable;
import Android.view.Gravity;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.BaseAdapter;
import Android.widget.ImageView;
import Android.widget.LinearLayout;
import Android.widget.TextView;

public class GridAdapter extends BaseAdapter {
    private ArrayList<String> mNameList = new ArrayList<String>();
    private ArrayList<Drawable> mDrawableList = new ArrayList<Drawable>();
    private LayoutInflater mInflater;
    private Context mContext;
    LinearLayout.LayoutParams params;

    public GridAdapter(Context context, ArrayList<String> nameList, ArrayList<Drawable> drawableList) {
        mNameList = nameList;
        mDrawableList = drawableList;
        mContext = context;
        mInflater = LayoutInflater.from(context);
        
        params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.CENTER;
    }

    public int getCount() {
        return mNameList.size();
    }

    public Object getItem(int position) {
        return mNameList.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ItemViewTag viewTag;
        
        if (convertView == null)
        {
            convertView = mInflater.inflate(R.layout.gridview_item, null);
            
            // construct an item tag  
            viewTag = new ItemViewTag((ImageView) convertView.findViewById(R.id.grid_icon), (TextView) convertView.findViewById(R.id.grid_name));
            convertView.setTag(viewTag);
        } else
        {
            viewTag = (ItemViewTag) convertView.getTag();
        }
        
        // set name  
        viewTag.mName.setText(mNameList.get(position));
        
        // set icon  
        viewTag.mIcon.setBackgroundDrawable(mDrawableList.get(position));
        viewTag.mIcon.setLayoutParams(params);
        return convertView;
    }
    
    class ItemViewTag
    {
        protected ImageView mIcon;
        protected TextView mName;
        
        /**
         * The constructor to construct a navigation view tag
         *
         * @param name
         *            the name view of the item
         * @param size
         *            the size view of the item
         * @param icon
         *            the icon view of the item
         */
        public ItemViewTag(ImageView icon, TextView name)
        {
            this.mName = name;
            this.mIcon = icon;
        }
    }

}
package com.Android.test;
import java.util.ArrayList;
import Android.content.Context;
import Android.graphics.drawable.Drawable;
import Android.view.Gravity;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.BaseAdapter;
import Android.widget.ImageView;
import Android.widget.LinearLayout;
import Android.widget.TextView;
public class GridAdapter extends BaseAdapter {
private ArrayList<String> mNameList = new ArrayList<String>();
private ArrayList<Drawable> mDrawableList = new ArrayList<Drawable>();
private LayoutInflater mInflater;
private Context mContext;
LinearLayout.LayoutParams params;
public GridAdapter(Context context, ArrayList<String> nameList, ArrayList<Drawable> drawableList) {
  mNameList = nameList;
  mDrawableList = drawableList;
  mContext = context;
  mInflater = LayoutInflater.from(context);
  
  params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
  params.gravity = Gravity.CENTER;
}
public int getCount() {
  return mNameList.size();
}
public Object getItem(int position) {
  return mNameList.get(position);
}
public long getItemId(int position) {
  return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
  ItemViewTag viewTag;
  
  if (convertView == null)
  {
   convertView = mInflater.inflate(R.layout.gridview_item, null);
  
   // construct an item tag
   viewTag = new ItemViewTag((ImageView) convertView.findViewById(R.id.grid_icon), (TextView) convertView.findViewById(R.id.grid_name));
   convertView.setTag(viewTag);
  } else
  {
   viewTag = (ItemViewTag) convertView.getTag();
  }
  
  // set name
  viewTag.mName.setText(mNameList.get(position));
  
  // set icon
  viewTag.mIcon.setBackgroundDrawable(mDrawableList.get(position));
  viewTag.mIcon.setLayoutParams(params);
  return convertView;
}

class ItemViewTag
{
  protected ImageView mIcon;
  protected TextView mName;
  
  /**
   * The constructor to construct a navigation view tag
   *
   * @param name
   *            the name view of the item
   * @param size
   *            the size view of the item
   * @param icon
   *            the icon view of the item
   */
  public ItemViewTag(ImageView icon, TextView name)
  {
   this.mName = name;
   this.mIcon = icon;
  }
}
}

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





喜欢0 评分0
游客

返回顶部