时间:2011-01-06 19:52:28

标签: android gridview

我需要在gridview中的每张图片下面插入一些文字。任何人都可以帮忙吗?我试图将文本视图放入getView()但没有成功。我已经评论过我尝试这样做了。

这是我的图像适配器代码:

import android.content.Context;
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 ImageAdapter extends BaseAdapter{

    private Context mContext;
    //private String[] texts = {"aaa", "bbb", "ccc", "ddd", "eee", "fff", "eee", "hhh", "iii"};

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() { //Constructor
        return getmThumbIds().length; //+9
    }

    public Object getItem(int position) {
        return null;
    }

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

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        //TextView tv;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); //Sets height and width for the view - Could use setAdjustViewBounds(boolean). 
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//Image should be cropped towards centre
            imageView.setPadding(8, 8, 8, 8); //Sets padding for all sides
            //tv = new TextView(mContext);
            //tv.setLayoutParams(new GridView.LayoutParams(85, 85));
        } else {
            imageView = (ImageView) convertView;
            //tv = (TextView) convertView;
            //tv.setText(texts[position]);
            //return tv;
        }

        imageView.setImageResource(getmThumbIds()[position]); //Chooses image from the array
        return imageView;

    }

    public void setmThumbIds(Integer[] mThumbIds) {
        this.mThumbIds = mThumbIds;
    }

    public Integer[] getmThumbIds() {
        return mThumbIds;
    }

    // references to our images
     Integer[] mThumbIds = {
            R.drawable.puma_boots, R.drawable.cricket_balls,
            R.drawable.darts, R.drawable.paintballing_gloves,
            R.drawable.ice_skates, R.drawable.skate_ramp,
            R.drawable.manu_top, R.drawable.rugby_ball,
            R.drawable.puma_boots, R.drawable.cricket_balls,
            R.drawable.darts, R.drawable.paintballing_gloves,
            R.drawable.ice_skates, R.drawable.skate_ramp,
            R.drawable.manu_top, R.drawable.tennis_racket,
            R.drawable.puma_boots, R.drawable.cricket_balls,
            R.drawable.darts, R.drawable.paintballing_gloves,
            R.drawable.ice_skates, R.drawable.skate_ramp,
            R.drawable.rugby_ball, R.drawable.tennis_racket
    };


}

2 个答案:

答案 0 :(得分:3)

您的getView()需要返回包含LinearLayoutRelativeLayout的{​​{1}}(或ImageView或其他)。

答案 1 :(得分:0)

您可以在TextView上使用CompoundDrawable

这样的事情:

public View getView(int position, View convertView, ViewGroup parent) {
    TextView tv = (TextView)convertView;
    if (tv == null) { 
        tv = new TextView(mContext);
        tv.setLayoutParams(new GridView.LayoutParams(85, 85));
        // add more setup stuff here like padding, textColor, gravity, etc
     }

    tv.setCompoundDrawablesWithIntrinsicBounds(0, getmThumbIds()[position], 0, 0);
    tv.setText(texts[position]);
    return tv;
}