我需要在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
};
}
答案 0 :(得分:3)
您的getView()
需要返回包含LinearLayout
和RelativeLayout
的{{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;
}