1

カスタムアダプターを作成したリストビューがあります。右にスワイプするとボタンが表示されるのでsetOnTouchListenerをつけました。私の問題は、スクロールを開始したときにボタンを削除して別のボタンを表示したいことです。

以下は、ビューを保持するためのアダプターです

public static final class TransactionAddDropViewHolder {

public View moveUpButton = null;
public View moveDownButton = null;
public View withdrawButton = null;
public View reviewButton = null;

public View approveButton = null;
public View rejectButton = null;

public LinearLayout addContainer = null;
public LinearLayout dropContainer = null;



public void swipeButtons() {
    addDropListView.setOnTouchListener(new OnSwipeTouchListener() {
    boolean isDeleteShowing = false;
        public void onSwipeRight() {
            if(!isDeleteShowing){
               withdrawButton.setVisibility(View.VISIBLE);
               isDeleteShowing = true;
             } else {
                 onScrollChanged();
                 isDeleteShowing = false;
             }
        }

        public void onSwipeLeft() {
            withdrawButton.setVisibility(View.INVISIBLE);
        }
    });
}

public void onScrollChanged(){

addDropListView.setOnScrollListener(new OnScrollListener() {

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
    Log.i("scrollStateChanged", "Changed");
}    
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    if(scrollState==SCROLL_STATE_IDLE){

         }
    }
  });
}

public void showUserButtons() {
    this.moveUpButton.setVisibility(View.VISIBLE);
    this.moveDownButton.setVisibility(View.VISIBLE);
    // this.withdrawButton.setVisibility(View.VISIBLE);
}

public void hideUserButtons() {
    this.moveUpButton.setVisibility(View.GONE);
    this.moveDownButton.setVisibility(View.GONE);
    // this.withdrawButton.setVisibility(View.GONE);
} 

}

これは、onSwipeButton getView を表示しているカスタム ビューです。

@Override
public View getView(final int position, View convertView,
        ViewGroup parent) {

    final TransactionAddDrop addDropData = this.addDropList.get(position);

    TransactionAddDropViewHolder holder = null;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.fragment_pending_transaction_list_item, null);
        holder = new TransactionAddDropViewHolder();

        holder.withdrawButton = convertView.findViewById(R.id.pendingTransactionItem_withdrawButton);
        holder.addContainer = (LinearLayout) convertView.findViewById(R.id.pendingTransactionItem_addContainer);
        **holder.swipeButtons();** 
        convertView.setTag(holder);
    } else {
        holder = (TransactionAddDropViewHolder) convertView.getTag();
        holder.swipeButtons(); 
    }
4

0 に答える 0