4

我有一个 Gridview 和自定义适配器。

在我的适配器中,我有一个静态 ViewHolder 实例。

static class ViewHolder
{ 
  TextView _model,tPrice,pPrice;
  ImageView picture;
}

这是我的 ViewHolder。当用户单击片段中的按钮时,我只想让 tPrice 可见性消失。当我创建适配器的一个 istance 时,我为 tPrice VISIBLITY 发送一个整数参数。但它的数据仍然是静态数据。我想改变这个区域。我需要一个我当前视图的实例。我会将它投射到我的 ViewHolder。完成此操作后,我设置了可见性。但是我该怎么做呢?

这是getView和我的构造函数

private int TFV = View.GONE;
private int PFV=  View.GONE;

public ProductGridViewAdapter(Context p_context, int p_resourceId,ArrayList<Product> p_ProductList,int TFVisib,int PFVisib){
    super(p_context,p_resourceId,p_ProductList);
    originalItems = p_ProductList;
     TFV = TFVisib;
     PFV = PFVisib;
    _ctx = p_context;
    //....
}

public View getView(int position, View convertView, ViewGroup parent) {   
    ViewHolder holder = null;
    View row = convertView;
    if(row==null){
        holder = new ViewHolder();      
        row = li.inflate(_resourceId, null);
        holder._model = (TextView) row.findViewById(R.id.o_model);    
        holder.pPrice = (TextView) row.findViewById(R.id.product_pf);  
        holder.tPrice = (TextView) row.findViewById(R.id.product_tf);  
        holder.picture = (ImageView)row.findViewById(R.id.product_lv_image);
        row.setTag(holder);
    }else{
        holder = (ViewHolder) row.getTag();
    }

    Product f =null;

    if(originalItems!=null)
         f = originalItems.get(position);
    if (f != null) {
         holder._model.setText(f.GetCODE());
         holder.pPrice.setText(f.GetPRICE());
         holder.pPrice.setVisibility(PFV);
         holder.tPrice.setVisibility(TFV);
         holder.tPrice.setText(f.GetCURRENCY());
         File imgFile = new  File(uhandler.GetProductsFolderPath()+"/BIG"+f.GetCODE()+".jpg");
         if(imgFile.exists()){
             Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
             holder.picture.setImageBitmap(myBitmap);
         }
    }
    return row;
}
4

2 回答 2

0

在您的自定义适配器类中,查看该getView()方法,您可以在其中将 GONE 或 VISIBLE 或 INVISIBLE 值设置为 tPrice TextView 或任何您想要的视图。

于 2013-04-02T04:46:04.913 回答
0

我解决了我的问题。我重新设置了适配器。这种方式可能是一种不好的方式,但它的工作:)

于 2013-04-02T06:36:43.667 回答