GridView上的TextView带有项目数



首先,我将向您展示我的ImageAdapter代码,它创建GridView与图像:

package com.example.rafal.gra;
import android.content.Context;
import android.content.res.Resources;
import android.util.TypedValue;
import android.view.LayoutInflater;
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 CTX;
    public Integer image_id[] = {R.mipmap.empty,R.mipmap.empty,R.mipmap.empty,
            R.mipmap.empty, R.mipmap.empty, R.mipmap.empty, R.mipmap.empty,
            R.mipmap.empty,R.mipmap.empty,R.mipmap.empty,R.mipmap.empty,
            R.mipmap.empty, R.mipmap.empty, R.mipmap.empty, R.mipmap.empty,
            R.mipmap.empty, R.mipmap.empty, R.mipmap.empty, R.mipmap.empty,
            R.mipmap.empty};

    public ImageAdapter(Context CTX){
        this.CTX = CTX;
    }
    @Override
    public int getCount() {
        return image_id.length;
    }
    @Override
    public Object getItem(int position) {
        return null;
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView img;

        int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80,
                CTX.getResources().getDisplayMetrics());
        if(convertView == null){
            img = new ImageView(CTX);
            img.setLayoutParams(new GridView.LayoutParams(height,height));
            img.setScaleType(ImageView.ScaleType.CENTER_CROP);
            img.setPadding(1,1,1,1);
        }else{
            img = (ImageView) convertView;
        }
        img.setImageResource(image_id[position]);
        return img;
    }
    //adding item to bp
    public void changeImage(int position, int image){
        if(position >= 0 && position < image_id.length){
            image_id[position] = image;
            notifyDataSetChanged();
        }
    }
}

这个GridView代表我游戏中的存款,当我打开DepotActivity时,不同的项目将显示在这些瓷砖上。

我要做的就是在每个瓷砖(底部/右上角)上添加TextView,这将显示项目的数量(我对每个项目都有一个变量"数量")。有人能帮帮我吗?

你可以设置你的getView()方法来动态添加一个imageView和一个textView,还有一件事是你需要添加一个holder类来帮助你更好地实现。我希望这对你有帮助。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View itemView = convertView;
        ViewHolder viewHolder;
        int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, CTX.getResources().getDisplayMetrics());
        if(convertView == null){
            viewHolder = new ViewHolder();
            viewHolder.layoutSection = new LinearLayout(CTX);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
            params.gravity = Gravity.CENTER;
            params.setMargins(5,5,5,5);
            viewHolder.img = new ImageView(CTX);
            viewHolder.img.setLayoutParams(new GridView.LayoutParams(height,height));
            viewHolder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);
            viewHolder.img.setPadding(1,1,1,1);
            viewHolder.textView = new TextView(CTX);
            viewHolder.textView.setText(("Enter text here");
            viewHolder.layoutSection.addView(viewHolder.textView);
            viewHolder.layoutSection.addView(viewHolder.img);
            itemView = viewHoder;
            itemView.setTag(viewHolder);

        }else{
            viewHolder = (ViewHolder)itemView.getTag();
        }
        viewHolder.img.setImageResource(image_id[position]);
        viewHolder.textView.setText("");// you can set your text here
        return itemView;
    }
    class ViewHolder {
        ImageView img;
        TextView textView;
        LinearLayout layoutSection;
    }

最新更新