2013-10-22 3 views
0

내 listview에서 행을 클릭하면 holder.four가 표시되고 두 번째 클릭하면 보이지 않게됩니다. 내가 그것을 보이게하기 위해 세 번째 시간을 클릭했을 때 그것은 작동하지 않습니다. vi onclick 리스너에서 실행 가능한 스레드에 문제가 있다고 생각합니다. 누군가이 문제를 어떻게 해결할 수 있는지 말해 줄 수 있습니다.목록보기 항목이 세 번째 항목 클릭 후 보이지 않습니다. android

를 대신이의 -

U이 작업을 통해 UR 로직 null로 다시 selectedHolder를 재설정해야 - UR 논리 나누기 어디

***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 = 홀더; 너의 if check 위에 라인이 올거야? – nurisezgin

답변

1

내가 'if condition 추측입니다 -

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; 
     } 
    }); 
} 
관련 문제