展会信息港展会大全

Android GridView中GridAdapter用法详解
来源:互联网   发布日期:2015-10-03 10:50:05   浏览:2457次  

导读:说到GridView Listview一定会提到他的adapter,现整理如下:main.xml布局里面:[html] <GridView android:id="@+id/gr...

说到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"

android:stretchMode="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"

android:stretchMode="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"

android:singleLine="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"

android:singleLine="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的使用就算结束,效果图如下:

摘自 知识空间

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港