2013-10-22 145 views
0

当我在我的listview中点击一行holder.four变得可见时,然后当我第二次点击时它变得不可见。当我第三次点击以使其可见时,它不起作用。我相信它在vi onclick监听器中有一个可运行线程的问题。有人可以告诉我如何解决这个问题。Listview项目在第三个项目点击后不可见android

***vi = inflater.inflate(R.layout.row_operation, null); 
    holder = new ViewHolder(); 
    holder.one = (TextView) vi.findViewById(R.id.text_on); 
    holder.two = (TextView) vi.findViewById(R.id.text_messag); 
    holder.three = (TextView) vi.findViewById(R.id.text_th); 
    holder.four = (TextView) vi.findViewById(R.id.text_details); 
    vi.setTag(holder); 
    holder.one.setText(data.get(position).getmontant()+" EUR"); 
    holder.two.setText((data.get(position).getlibelle())); 
    holder.three.setText(data.get(position).getdateValeur()); 
    holder.four.setVisibility(View.GONE); 
    holder.four.setText(data.get(position).getdateOper()); 
    //clickEvent(); 
    vi.setOnClickListener(this); 
    return vi; 
} 
/* 
* On Click event 
*/ 
@Override 
public void onClick(final View v){ 
    v.post(new Runnable() { 
     @Override 
     public void run() { 
      ViewHolder holder = ((ViewHolder)v.getTag()); 
      holder.four.setVisibility(View.VISIBLE); 
      if(selectedHolder != null) 
       holder.four.setVisibility(View.GONE); 
      selectedHolder = holder; 
     } 
    }); 
} 

} *

+0

selectedHolder =持有人;如果检查,线会超过你的? – nurisezgin

回答

1

我猜'if condition就是乌尔逻辑游 -

ü需要的selectedHolder重置回null乌拉圭回合的逻辑工作 -

取而代之的是 -

if(selectedHolder != null) 
       holder.four.setVisibility(View.GONE); 
      selectedHolder = holder; 

做到这一点 -

if(selectedHolder != null) { 
holder.four.setVisibility(View.GONE); 
selectedHolder = null; 
} else { 
selectedHolder = holder; 
} 
+0

谢谢你,你是对的 – Dimitri

1
check this piece of code 

@Override 
public void onClick(final View v){ 
    v.post(new Runnable() { 
     @Override 
     public void run() { 
      ViewHolder holder = ((ViewHolder)v.getTag()); 

      if(selectedHolder != null) 
     { 
      if (holder.four.getVisibility()==View.GONE) 
       holder.four.setVisibility(View.VISIBLE); 
      else if (holder.four.getVisibility()==View.INVISIBLE) 
       holder.four.setVisibility(View.VISIBLE); 
      else if (holder.four.getVisibility()==View.VISIBLE)   
         holder.four.setVisibility(View.GONE); 
     } 
      selectedHolder = holder; 
     } 
    }); 
}