歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android GridView中GridAdapter 用法詳解

Android GridView中GridAdapter 用法詳解

日期:2017/3/1 10:20:24   编辑:Linux編程

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

到此,adapter的使用就算結束,效果圖如下:


更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved