2013-04-02 3 views
4

Gridview 및 사용자 지정 어댑터가 있습니다.Gridview 항목 가시성 변경

내 어댑터에는 정적 ViewHolder 인스턴스가 있습니다.

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

내 ViewHolder입니다. 사용자가 단편에서 버튼을 클릭하면 tPrice 가시성을 없애기 만하면됩니다. 어댑터의 특성을 만들 때 tPrice VISIBLITY에 정수 매개 변수를 보냅니다. 그러나 그 데이터는 여전히 정적 데이터에 있습니다. 나는이 지역을 바꾸고 싶다. 내 현재보기의 인스턴스가 필요합니다. ViewHolder로 캐스팅합니다. 이것 후에 나는 visiblity를 설정했다. 하지만 어떻게 할 수 있습니까? 여기

은의 getView 및 사용자 정의 어댑터 클래스에서 내 constructer

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

, 당신은 tPrice 텍스트 뷰 또는 뷰 당신이 경우에 GONE 나 보이거나 보이지 않는 값을 설정할 수있는 getView() 방법 볼 수 있습니다 필요.

+0

tPrice VISIBILITY는 가시가 있습니다. 버튼을 클릭하면 어댑터에 데이터를 보내고이 데이터는 visiblity를 트리거하지만 여전히 볼 수 있습니다. – Twinsens

+0

@Twinsens 여기 getView() 코드를 게시하는 것이 좋습니다. –

+0

클릭 이벤트가 트리거되면 어댑터 매개 변수의 인스턴스가 조각에서 변경됩니다. – Twinsens