GridView上的TextView包含多个项目

时间:2016-09-24 11:49:32

标签: java android gridview

首先,我将向您展示我的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,这将显示项目数量(我的每个项目都有一个变量“数量”)。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以将getView()方法设置为动态添加一个imageView和一个textView,还需要添加一个持有者类,这有助于您更好地实现。我希望这会对你有所帮助。

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