0

リストビューの行をクリックすると、holder.four が表示され、2 回目にクリックすると表示されなくなります。3回目にクリックして表示すると、機能しません。vi onclickリスナーの実行可能なスレッドに問題があると思います。この問題を解決する方法を教えてください。

***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;
        }
    });
}

} *

4

2 に答える 2

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;
        }
    });
}
于 2013-10-22T06:12:35.507 に答える
1

'if conditionはあなたの論理が壊れているところだと思います -

nullロジックを機能させるには、selectedHolder をリセットする必要があります-

これの代わりに -

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

これを行う -

if(selectedHolder != null) {
 holder.four.setVisibility(View.GONE);
 selectedHolder = null;
} else {
 selectedHolder = holder;
}
于 2013-10-22T06:05:23.553 に答える