Android(安卓)GridView中GridAdapter 用法详解
16lz
2021-01-24
说到GridView Listview一定会提到他的adapter,现整理如下:
main.xml布局里面:
<GridViewandroid: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:
<?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 代码:
GridView grid = (GridView) findViewById(R.id.grid);grid.setAdapter(new GridAdapter(this, mNameList, mDrawableList));
GridAdapter.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 tagviewTag = 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 nameviewTag.mName.setText(mNameList.get(position));// set iconviewTag.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(安卓)ButterKnife Zelezny
- Android系统(168)---Android(安卓)开源项目分类汇总
- android ListView增加Animation效果
- Android学习笔记:RecyclerView
- android模仿微信朋友圈图片预览转场缩放动画
- Android的Layout --- 布局
- Android(安卓)PullZoomView:PullToZoomScrollViewEx(2)
- Android开发常见错误及技巧