Reputation: 1924
When i clicked on a row in my listview the holder.four become visible, then when i clicked a second time it becomes invisible. When i clicked for a third time to make it visible it doesnt work. I believe it has a problem with runnable thread in vi onclick listener. can somebody tell me how can i remedy this issue.
***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;
}
});
}
}*
Upvotes: 0
Views: 479
Reputation: 129
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;
}
});
}
Upvotes: 1
Reputation: 8614
I guess 'if condition
is where ur logic breaks -
U need to reset the selectedHolder back to null
for ur logic to work -
Instead of this -
if(selectedHolder != null)
holder.four.setVisibility(View.GONE);
selectedHolder = holder;
Do this -
if(selectedHolder != null) {
holder.four.setVisibility(View.GONE);
selectedHolder = null;
} else {
selectedHolder = holder;
}
Upvotes: 1