2013-04-02 110 views
4

我有一個Gridview和自定義適配器。更改Gridview項目的可見性

在我的適配器中,我有一個靜態ViewHolder實例。

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

這是我的ViewHolder。當用戶點擊片段中的按鈕時,我只想讓tPrice可見性消失。 當我創建一個適配器,我爲tPrice VISIBLITY發送一個整數參數。但其數據仍然在靜態數據上。我想改變這個領域。我需要一個當前視圖的實例。我會將它投射到我的ViewHolder。這樣做後,我設置visiblity。但我該怎麼做?

這裏是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; 
} 

回答

0

我解決了我的問題。我再次設置了適配器。這種方式可能是一種不好的方式,但它的工作:)

0

在您的自定義適配器類,看看getView()方法,您可以在其中設置GONE或有形或無形價值的tPrice TextView的,或者如果您有什麼意見想。

+0

tPrice VISIBILITY是可見的okey。當我點擊按鈕,我發送數據到適配器,這個數據觸發visiblity,但我仍然可見 – Twinsens

+0

@Twinsens更好,你發佈getView()代碼在這裏。 –

+0

當單擊事件觸發時,適配器參數的實例將在片段上發生變化 – Twinsens