2011-01-06 91 views
0

我需要在gridview中的每張圖片下插入一些文字。任何人都可以幫助這個嗎?我試圖把文本視圖放到getView()中,但沒有成功。我已經評論了我的嘗試。有沒有人知道如何把每個圖像下的文本在gridview中?

這是我的形象適配器代碼:包含ImageViewTextView

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 
    }; 


} 

回答

3

getView()需要返回LinearLayout(或RelativeLayout或其他)。

+0

你的意思,return語句後,引用XML與裏面的相對佈局?我不太清楚如何編碼? – Ben 2011-01-06 20:28:49

0

您可以在頂部使用TextViewCompoundDrawable

事情是這樣的:

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; 
} 
相關問題