Кто-нибудь знает, как поместить текст под каждым изображением в сетке? - PullRequest
0 голосов
/ 06 января 2011

Мне нужно вставить текст под каждой картинкой в ​​сетке.Кто-нибудь может помочь с этим?Я попытался поместить текстовое представление в 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 ]

3 голосов
/ 06 января 2011

Ваш getView() должен вернуть LinearLayout (или RelativeLayout или что-либо еще), содержащий ImageView и TextView.

0 голосов
/ 23 февраля 2012

Вы можете использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...