实现很简单,自定义BaseAdapter,在getView自定义item视图

解决方案 »

  1.   

    public class MainActivity extends Activity {
    private GridView MyGridView;
    private int[] image = { R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher };
    private int[] title = { R.string.a, R.string.e, R.string.g, R.string.i,
    R.string.o, R.string.q, R.string.r, R.string.t, R.string.u,
    R.string.w }; public void onCreat(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    MyGridView = (GridView) findViewById(R.id.MyGridView);
    ItemBaseAdapter adapter = new ItemBaseAdapter(title, image, this);
    MyGridView.setAdapter(adapter);
    MyGridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int id,
    long position) {
    Toast.makeText(MainActivity.this, "item" + (position + 1),
    Toast.LENGTH_LONG).show(); }
    });
    }public class ItemBaseAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    private List<GridItem> listGridItems; public ItemBaseAdapter(int[] title, int[] image, Context context) {
    super();
    listGridItems = new ArrayList<GridItem>();
    mInflater = LayoutInflater.from(context);
    for (int i = 0; i < image.length; i++) {
    GridItem pItem = new GridItem(title[i], image[i]);
    listGridItems.add(pItem);
    }
    } public int getCount() {
    if (null != listGridItems) {
    return listGridItems.size();
    } else {
    return 0;
    } } public Object getItem(int position) {
    return listGridItems.get(position);
    } public long getItemId(int position) {
    return position;
    } public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    if (convertView == null) {
    convertView = mInflater.inflate(R.layout.item, null);
    viewHolder = new ViewHolder();
    viewHolder.title = (TextView) convertView.findViewById(R.id.title);
    viewHolder.image = (ImageView) convertView
    .findViewById(R.id.imageView);
    convertView.setTag(viewHolder);
    } else {
    viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.title.setText(listGridItems.get(position).getTitle());
    viewHolder.image.setImageResource(listGridItems.get(position)
    .getImageId());
    return convertView;
    }
    }
    class GridItem { private int titleId;
    private int imageId; public GridItem() {
    super();
    } public GridItem(int titleId, int imageId) {
    super();
    this.titleId = titleId;
    this.imageId = imageId;
    } public int getTitle() {
    return titleId;
    } public void setTitle(int title) {
    this.titleId = title;
    } public int getImageId() {
    return imageId;
    } public void setImageId(int imageId) {
    this.imageId = imageId;
    }}public class ViewHolder { public TextView title;
    public ImageView image;
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >    <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="4dp"
            android:scaleType="fitXY" />    <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center_vertical" /></LinearLayout><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
         android:layout_marginTop="5dp" >    <GridView
            android:id="@+id/MyGridView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:columnWidth="90dp"
            android:gravity="center"
            android:horizontalSpacing="10dp"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth"
            android:verticalSpacing="10dp" >
        </GridView></LinearLay>
    实现代码为上面 但是   程序可以运行不报错  
    就是没有   界面出来   说我没有  在 MainActivity里面启动这是为什么求高手  指点
      

  2.   

    自定义的适配器有问题,把Interflter改下
    private Context context;
    private int[] data;
    public ItemBaseAdapter(Context context,int [] data) {
    super();
    this.context = context;
                    this.data = data;
    }
    还有构造方法,在MainActivity里面new的是时候为
    ItemBaseAdapter adapter = new ItemBaseAdapter(this,image);
    这样应该就可以了
      

  3.   

    小倪飞刀你的那个方法不行 额 
    我换了种方法如下代码还是不显示啊
    哪里错了额package com.zhouweiyoushale;import java.util.List;import com.zhouweiyousha.R;import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.TextView;public class MainActivity extends Activity { private GridView MyGridView;
    int[] imageid = { R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher,
    R.drawable.ic_launcher, R.drawable.ic_launcher };
    int[] nameid = { R.string.a, R.string.e, R.string.g, R.string.i,
    R.string.o, R.string.q, R.string.r, R.string.t, R.string.u,
    R.string.w }; public void onCreat(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    MyGridView = (GridView) findViewById(R.id.MyGridView);
    ItemBaseAdapter adapter = new ItemBaseAdapter(this);
    MyGridView.setAdapter(adapter);
    } private class ItemBaseAdapter extends BaseAdapter {
    private Context mContext;
    private LayoutInflater mInflater;
    private List<GridItem> mlist;
    private ViewHolder holder; public ItemBaseAdapter(Context c) {
    super();
    this.mContext = c;
    } private class ViewHolder {
    private TextView title;
    private ImageView imageView;
    }
    public void setList(List<GridItem> mlist) {
    this.mlist = mlist;
    mInflater = (LayoutInflater) mContext
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount() {
    return mlist.size();
    } public Object getItem(int position) {
    return mlist.get(position);
    } public long getItemId(int position) {
    return position;
    } public View getView(int position, View convertView, ViewGroup parent) { if (holder == null) {
    convertView = mInflater.inflate(R.layout.item, null);
    holder = new ViewHolder();
    holder.title = (TextView) convertView.findViewById(R.id.title);
    holder.imageView = (ImageView) convertView
    .findViewById(R.id.imageView);
    convertView.setTag(convertView);
    } else {
    holder = (ViewHolder) convertView.getTag();
    }
    holder.title.setText(mlist.get(position).getTitle());
    holder.imageView.setImageResource(mlist.get(position).getImageId());
    return convertView;
    } } public class GridItem { private String title;
    private int imageId; public GridItem(String title, int imageId) {
    super();
    this.title = title;
    this.imageId = imageId;
    } public String getTitle() {
    return title;
    } public void setTitle(String title) {
    this.title = title;
    } public int getImageId() {
    return imageId;
    } public void setImageId(int imageId) {
    this.imageId = imageId;
    } }
    }