的TextView在GridView控件与项目

问题描述:

的数量首先,我会告诉你我ImageAdapter代码与图像创建GridView的TextView在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,还有一件事是你需要添加一个持有者类,这有助于你更好地实现。我希望这能帮到您。

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

不幸的是,我有'itemView.setTag(viewHolder);'行异常。它说:尝试在空对象引用 – Haras

+0

上调用虚拟方法'void android.view.View.setTag(java.lang.Object)',请分享错误日志。 – Shailesh

+0

你的意思是从帮助 - >显示登录资源管理器 - > Idea.log或threadDumps? – Haras