Does anyone know how to put text underneath each image in a gridview?
I need to insert some text underneath each picture in the gridview. Can anyone help withi this? I have tried to put a text view into the getView() but no success. I have commented out my attempt to do this.
This is my image adapter code:
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
};
}
Your getView()
needs to return a LinearLayout
(or RelativeLayout
or whatever) containing an ImageView
and a TextView
.
You could use a TextView
with a CompoundDrawable
on top.
Something like this:
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;
}
精彩评论