在Android的自定义列表视图向右滑动显示按钮自定义、视图、按钮、列表

2023-09-06 00:45:23 作者:锁骨上的吻痕

我想实现,显示在滑动按钮右侧的自定义列表视图。问题我现在面临现在的问题是,我实现了我在网上找到的onSwipeTouchListener。我可能能看到刷卡按钮。但它不是一致的,我的意思是,如果我右轻扫上的一排,按钮显示在其他一些列。这就是我想。

我创建了一个适配器,用于保存视图

  // TransactionAddDropViewHolder


        公共静态final类TransactionAddDropViewHolder {

    公共查看moveUpButton = NULL;
    公共查看moveDownButton = NULL;
    公共查看withdrawButton = NULL;
    公共查看reviewButton = NULL;

    公共查看ApproveButton中= NULL;
    公共查看rejectButton = NULL;

    公众的LinearLayout addContainer = NULL;
    公众的LinearLayout dropContainer = NULL;



    公共无效swipeButtons(){
        addDropListView.setOnTouchListener(新OnSwipeTouchListener(){

            公共无效onSwipeRight(){
                withdrawButton.setVisibility(View.VISIBLE);
            }

            公共无效onSwipeLeft(){
                withdrawButton.setVisibility(View.INVISIBLE);
            }
        });
    }

    公共无效showUserButtons(){
        this.moveUpButton.setVisibility(View.VISIBLE);
        this.moveDownButton.setVisibility(View.VISIBLE);
        // this.withdrawButton.setVisibility(View.VISIBLE);
    }

    公共无效hideUserButtons(){
        this.moveUpButton.setVisibility(View.GONE);
        this.moveDownButton.setVisibility(View.GONE);
        // this.withdrawButton.setVisibility(View.GONE);
    }

}
 

这是我的自定义视图我在哪里显示onSwipeButton

  @覆盖
    公共查看getView(最终诠释的立场,观点convertView,
            ViewGroup中父){

        最后TransactionAddDrop addDropData = this.addDropList.get(位置);

        TransactionAddDropViewHolder支架=无效;

        如果(convertView == NULL){
            convertView = inflater.inflate(R.layout.fragment_pending_transaction_list_item,NULL);
            持有人=新TransactionAddDropViewHolder();

holder.withdrawButton = convertView.findViewById(R.id.pendingTransactionItem_withdrawButton);
            holder.addContainer =(的LinearLayout)convertView.findViewById(R.id.pendingTransactionItem_addContainer);
            ** holder.swipeButtons(); **
            convertView.setTag(保持器);
        } 其他 {
            支架=(TransactionAddDropViewHolder)convertView.getTag();
            holder.swipeButtons();
        }
 

这是我OnSwipeTouchListener类

 私人最后一类GestureListener扩展SimpleOnGestureListener {

    私有静态最终诠释SWIPE_THRESHOLD = 100;
    私有静态最终诠释SWIPE_VELOCITY_THRESHOLD = 100;

    @覆盖
    公共布尔onDown(MotionEvent E){
        返回true;
    }

    @覆盖
    公共布尔onFling(MotionEvent E1,E2 MotionEvent,浮velocityX,浮velocityY){
        布尔结果= FALSE;
        尝试 {
            浮diffY = e2.getY() -  e1.getY();
            浮diffX = e2.getX() -  e1.getX();
            如果(Math.abs(diffX)> Math.abs(diffY)){
                如果(Math.abs(diffX)> SWIPE_THRESHOLD和放大器;&安培; Math.abs(velocityX)> SWIPE_VELOCITY_THRESHOLD){
                    如果(diffX大于0){
                        onSwipeRight();
                    } 其他 {
                        onSwipeLeft();
                    }
                }
            } 其他 {
                如果(Math.abs(diffY)> SWIPE_THRESHOLD和放大器;&安培; Math.abs(velocityY)> SWIPE_VELOCITY_THRESHOLD){
                    如果(diffY大于0){
                        onSwipeBottom();
                    } 其他 {
                        onSwipeTop();
                    }
                }
            }
        }赶上(例外的例外){
            exception.printStackTrace();
        }
        返回结果;
    }
}
 
如何在Android的自定义列表视图中使用搜索功能

添加XML布局

 < XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:程序=htt​​p://schemas.android.com/apk/res/com.cbssports.nflapp.ffb
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / swipeRight
机器人:方向=垂直>

<的LinearLayout
    机器人:ID =@ + ID / claimlayout
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:方向=横向>

    <的LinearLayout
        机器人:ID =@ + ID /索赔
        机器人:layout_width =60dp
        机器人:layout_height =WRAP_CONTENT
        机器人:重力=中心
        机器人:方向=垂直
        机器人:填充=10dp>

        < com.cbssports.nflapp.ffb.CustomText
            机器人:ID =@ + ID / claimNumber
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_centerVertical =真
            机器人:文本=1
            机器人:文字颜色=#B4B4B5
            机器人:TEXTSIZE =36dp
            应用程序:字体=oswald_regular/>
    < / LinearLayout中>

    < RelativeLayout的
        机器人:ID =@ + ID / pendingPlayers
        机器人:layout_width =200dp
        机器人:layout_height =WRAP_CONTENT>

        <的LinearLayout
            机器人:ID =@ + ID / tradeDate
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_alignParentTop =真
            机器人:方向=横向
            机器人:layout_toRightOf =@ + ID / claimlayout
            机器人:paddingTop =5DP>

            < com.cbssports.nflapp.ffb.CustomText
                机器人:ID =@ + ID / pendingTransactionItem_teamName
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:文字颜色=#B4B4B5
                机器人:TEXTSIZE =9dp
                应用程序:字体=oswald_regular/>

            < com.cbssports.nflapp.ffb.CustomText
                机器人:ID =@ + ID / pendingTransactionItem_bidAmount
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:后台=#797979
                机器人:文本=
                机器人:文字颜色=#FFFFFF
                机器人:TEXTSIZE =9dp/>
        < / LinearLayout中>

        <的LinearLayout
            机器人:ID =@ + ID / adddropView
            机器人:layout_width =match_parent
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_below =@ + ID / tradeDate
            机器人:layout_toRightOf =@ + ID / claimlayout
            机器人:方向=垂直>

            <的LinearLayout
                机器人:ID =@ + ID / addViewContainer
                机器人:layout_width =match_parent
                机器人:layout_height =WRAP_CONTENT
                机器人:方向=横向>

                < com.cbssports.nflapp.ffb.CustomText
                    机器人:layout_width =50dp
                    机器人:layout_height =WRAP_CONTENT
                    机器人:paddingRight =10dp
                    机器人:文本=ADD
                    机器人:文字颜色=#797979
                    机器人:TEXTSIZE =15dp
                    应用程序:字体=oswald_regular/>

                <的LinearLayout
                    机器人:ID =@ + ID / pendingTransactionItem_addContainer
                    机器人:layout_width =WRAP_CONTENT
                    机器人:layout_height =WRAP_CONTENT
                    机器人:方向=垂直/>
            < / LinearLayout中>

            <的LinearLayout
                机器人:ID =@ + ID / adddropViewContainer
                机器人:layout_width =match_parent
                机器人:layout_height =WRAP_CONTENT
                机器人:layout_toRightOf =@ + ID / claimlayout
                机器人:方向=横向>

                < com.cbssports.nflapp.ffb.CustomText
                    机器人:layout_width =50dp
                    机器人:layout_height =WRAP_CONTENT
                    机器人:paddingRight =10dp
                    机器人:文本=DROP
                    机器人:文字颜色=#797979
                    机器人:TEXTSIZE =15dp
                    应用程序:字体=oswald_regular/>

                <的LinearLayout
                    机器人:ID =@ + ID / pendingTransactionItem_dropContainer
                    机器人:layout_width =WRAP_CONTENT
                    机器人:layout_height =WRAP_CONTENT
                    机器人:方向=垂直/>
            < / LinearLayout中>
        < / LinearLayout中>
    < / RelativeLayout的>

    <的LinearLayout
        机器人:ID =@ + ID / pendingTransactionItem_userButtonContainer
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_alignParentRight =真
        机器人:layout_gravity =center_vertical
        机器人:layout_toRightOf =@ + ID / pendingPlayers
        机器人:重力=中心
        机器人:方向=垂直>

        <的LinearLayout
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_alignParentRight =真
            机器人:layout_gravity =center_vertical
            机器人:重力=中心
            机器人:方向=横向>

            <按钮
                机器人:ID =@ + ID / pendingTransactionItem_moveUpButton
                机器人:layout_width =20dp
                机器人:layout_height =15dp
                机器人:layout_margin =3DP
                机器人:背景=@可绘制/ gfx_up_arrow
                机器人:填充=1DP
                机器人:文字颜色=#FFFFFF
                机器人:TEXTSIZE =7SP
                机器人:能见度=看见/>

            <按钮
                机器人:ID =@ + ID / pendingTransactionItem_moveDownButton
                机器人:layout_width =20dp
                机器人:layout_height =15dp
                机器人:layout_margin =3DP
                机器人:背景=@可绘制/ gfx_down_arrow
                机器人:填充=1DP
                机器人:文字颜色=#FFFFFF
                机器人:TEXTSIZE =7SP
                机器人:能见度=看见/>
        < / LinearLayout中>

        < ImageView的
            机器人:ID =@ + ID / pendingTransactionItem_withdrawButton
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:填充=1DP
            机器人:SRC =@可绘制/ ic_cancelclaim
            机器人:能见度=水涨船高/>

        <! - 交易回顾 - >

        < ImageView的
            机器人:ID =@ + ID / pendingTransactionItem_reviewButton
            机器人:layout_width =38dp
            机器人:layout_height =38dp
            机器人:填充=1DP
            机器人:SRC =@可绘制/ btn_review
            机器人:能见度=水涨船高/>
    < / LinearLayout中>
< / LinearLayout中>
 

添加一个问题。获得的视图的总数的计数。但要在不同的布局来显示。这是我的onCreatedView

 公开查看onCreateView(LayoutInflater充气,容器的ViewGroup,
        捆绑savedInstanceState){

    fragmentPendingTrades = inflater.inflate(R.layout.fragment_transactions_pending,集装箱,假);
    pendingTradesView =充气;

    返回fragmentPendingTrades;
}

    公共无效onViewCreated(最终视图中查看,最终捆绑savedInstanceState){

    this.addDropListView =(ListView控件)view.findViewById(R.id.transactions_pending_transactionsListView);
    this.addDropAdapter =新TransactionAddDropAdapter(pendingTradesView);
    this.addDropListView.setAdapter(this.addDropAdapter);
    this.emptyTransationsContainer = view.findViewById(R.id.transactions_pending_transactions_emptyContainer);



    TextView的getTotalCount =(TextView中)view.findViewById(R.id.transactions_pending_TransactionsAddDropCount);

    getTotalCount.setText(+ addDropListView.getCount());



}
 

解决方案

那么,这是可以做到2种方式,因为我看到它:

收听到整个列表上刷卡,找出哪一行的刷卡发生,并显示/隐藏正确的行按钮。 听每一行上刷卡,并显示/隐藏该行的按钮。

现在你所设置列表中的听众,但尝试应用显示/隐藏连接适配器中的按钮。从某种意义上说,你正在做的各占一半解决方案。有你有什么,我建议你去与选项#2。

在你的 TransactionAddDropViewHolder ,你需要获得一个参考的行布局根查看,所以我们可以设置 OnSwipeTouchListener 吧。

 公共静态final类TransactionAddDropViewHolder {

    公共查看rootView = NULL;

    //你其他code

    公共无效swipeButtons(){
        rootView.setOnTouchListener(新OnSwipeTouchListener(){

            公共无效onSwipeRight(){
                withdrawButton.setVisibility(View.VISIBLE);
            }

            公共无效onSwipeLeft(){
                withdrawButton.setVisibility(View.INVISIBLE);
            }
        });
    }

    //你其他code

}
 

接下来,在你的 getView 方法,更新让你的 TransactionAddDropViewHolder 获取一个根查看的布局。

  @覆盖
公共查看getView(最终诠释的立场,观点convertView,ViewGroup中父){

    最后TransactionAddDrop addDropData = this.addDropList.get(位置);

    TransactionAddDropViewHolder支架=无效;

    如果(convertView == NULL){
        convertView = inflater.inflate(R.layout.fragment_pending_transaction_list_item,NULL);
        持有人=新TransactionAddDropViewHolder();

        //获取一个引用的行布局根
        holder.rootView = convertView.findViewById(R.id.swipeRight);

        holder.withdrawButton = convertView.findViewById(R.id.pendingTransactionItem_withdrawButton);
        holder.addContainer =(的LinearLayout)convertView.findViewById(R.id.pendingTransactionItem_addContainer);

        holder.swipeButtons();
        convertView.setTag(保持器);
    } 其他 {
        支架=(TransactionAddDropViewHolder)convertView.getTag();
        holder.swipeButtons();
    }
}
 

还有一个问题,你将有,该按钮会显示正确刷卡的时候,但如果用户继续滚动,它会出现在其他行。这是因为的ListView 循环利用行的查看秒。我建议你​​做任何两件事情:

当用户开始滚动后,再按下此键为present,再次将其隐藏。这是iOS的做用刷卡删除在列表中。 使用一个布尔来存储你的数据对象,如果该行的模式,其中按钮可见, isDeleteShowing 为例。然后在你的onSwipe回调,将 isDeleteShowing 来真/假。最后,在你的 getView ,你展现的按钮有根据 isDeleteShowing 该数据行/隐藏。

希望这一切帮助。

I am trying to implement, show the button on swipe right in the custom list view. Problem i am facing right now is, i implemented the onSwipeTouchListener which i found online. I could able to see the swipe button. But its not consistent, i mean if i swipe right on one row, button is displaying in some other row. This is what i tried.

i created an adapter for holding the view

//TransactionAddDropViewHolder


        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() {

            public void onSwipeRight() {
                withdrawButton.setVisibility(View.VISIBLE);
            }

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

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

}

And this is my Custom View where i am displaying the onSwipeButton

@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(); 
        }

And this is my OnSwipeTouchListener Class

    private final class GestureListener extends SimpleOnGestureListener {

    private static final int SWIPE_THRESHOLD = 100;
    private static final int SWIPE_VELOCITY_THRESHOLD = 100;

    @Override
    public boolean onDown(MotionEvent e) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        boolean result = false;
        try {
            float diffY = e2.getY() - e1.getY();
            float diffX = e2.getX() - e1.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                }
            } else {
                if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffY > 0) {
                        onSwipeBottom();
                    } else {
                        onSwipeTop();
                    }
                }
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return result;
    }
}

Adding the XML Layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.cbssports.nflapp.ffb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/swipeRight"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/claimlayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/claim"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="10dp" >

        <com.cbssports.nflapp.ffb.CustomText
            android:id="@+id/claimNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="1"
            android:textColor="#B4B4B5"
            android:textSize="36dp"
            app:typeface="oswald_regular" />
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/pendingPlayers"
        android:layout_width="200dp"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:id="@+id/tradeDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:orientation="horizontal"
            android:layout_toRightOf="@+id/claimlayout"
            android:paddingTop="5dp" >

            <com.cbssports.nflapp.ffb.CustomText
                android:id="@+id/pendingTransactionItem_teamName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#B4B4B5"
                android:textSize="9dp"
                app:typeface="oswald_regular" />

            <com.cbssports.nflapp.ffb.CustomText
                android:id="@+id/pendingTransactionItem_bidAmount"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#797979"
                android:text=""
                android:textColor="#ffffff"
                android:textSize="9dp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/adddropView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tradeDate"
            android:layout_toRightOf="@+id/claimlayout"
            android:orientation="vertical" >

            <LinearLayout
                android:id="@+id/addViewContainer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <com.cbssports.nflapp.ffb.CustomText
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:paddingRight="10dp"
                    android:text="ADD"
                    android:textColor="#797979"
                    android:textSize="15dp"
                    app:typeface="oswald_regular" />

                <LinearLayout
                    android:id="@+id/pendingTransactionItem_addContainer"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/adddropViewContainer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/claimlayout"
                android:orientation="horizontal" >

                <com.cbssports.nflapp.ffb.CustomText
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:paddingRight="10dp"
                    android:text="DROP"
                    android:textColor="#797979"
                    android:textSize="15dp"
                    app:typeface="oswald_regular" />

                <LinearLayout
                    android:id="@+id/pendingTransactionItem_dropContainer"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" />
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/pendingTransactionItem_userButtonContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_gravity="center_vertical"
        android:layout_toRightOf="@+id/pendingPlayers"
        android:gravity="center"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/pendingTransactionItem_moveUpButton"
                android:layout_width="20dp"
                android:layout_height="15dp"
                android:layout_margin="3dp"
                android:background="@drawable/gfx_up_arrow"
                android:padding="1dp"
                android:textColor="#ffffff"
                android:textSize="7sp"
                android:visibility="visible" />

            <Button
                android:id="@+id/pendingTransactionItem_moveDownButton"
                android:layout_width="20dp"
                android:layout_height="15dp"
                android:layout_margin="3dp"
                android:background="@drawable/gfx_down_arrow"
                android:padding="1dp"
                android:textColor="#ffffff"
                android:textSize="7sp"
                android:visibility="visible" />
        </LinearLayout>

        <ImageView
            android:id="@+id/pendingTransactionItem_withdrawButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="1dp"
            android:src="@drawable/ic_cancelclaim"
            android:visibility="gone" />

        <!-- Transaction Review -->

        <ImageView
            android:id="@+id/pendingTransactionItem_reviewButton"
            android:layout_width="38dp"
            android:layout_height="38dp"
            android:padding="1dp"
            android:src="@drawable/btn_review"
            android:visibility="gone" />
    </LinearLayout>
</LinearLayout>

Adding one more question. getting the total Count of the view. But want to display in the different layout. Here is my onCreatedView

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    fragmentPendingTrades = inflater.inflate(R.layout.fragment_transactions_pending, container, false);
    pendingTradesView = inflater;

    return fragmentPendingTrades;
}

    public void onViewCreated(final View view, final Bundle savedInstanceState) {

    this.addDropListView = (ListView) view.findViewById(R.id.transactions_pending_transactionsListView);
    this.addDropAdapter = new TransactionAddDropAdapter(pendingTradesView);
    this.addDropListView.setAdapter(this.addDropAdapter);
    this.emptyTransationsContainer = view.findViewById(R.id.transactions_pending_transactions_emptyContainer);



    TextView getTotalCount = (TextView) view.findViewById(R.id.transactions_pending_TransactionsAddDropCount);

    getTotalCount.setText(""+addDropListView.getCount());



}

解决方案

So, this can be done 2 ways as I see it:

Listen to swipes on the entire list, figure out which row the swiped occurred on, and show/hide the button for the correct row. Listen to swipes on each row, and show/hide the button for that row.

Right now you are setting the listener on the list, but trying to apply show/hide the button attached in the adapter. In a way, you are doing half of each solution. With what you have, I suggest you go with option #2.

In your TransactionAddDropViewHolder, you need to get a reference to the root View in the row layout, so we can set the OnSwipeTouchListener to it.

public static final class TransactionAddDropViewHolder {

    public View rootView = null;

    // Your other code

    public void swipeButtons() {
        rootView.setOnTouchListener(new OnSwipeTouchListener() {

            public void onSwipeRight() {
                withdrawButton.setVisibility(View.VISIBLE);
            }

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

    // Your other code

}

Next, in your getView method, update it so your TransactionAddDropViewHolder gets a reference to the root View in the layout.

@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();

        // Get a reference to the root of the row layout
        holder.rootView = convertView.findViewById(R.id.swipeRight); 

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

There is one more issue you will have, the button will correctly show up when swiped, but if the user continues to scroll, it will appear on other rows. This is because ListView recycles its row's Views. I suggest you do either 2 things:

When the user starts scrolling again after the button is present, you hide it again. This is what iOS does with "swipe to delete" in lists. Use a boolean to store in your data object if the row is in the mode where the button is visible, isDeleteShowing for example. Then in your onSwipe callbacks, you set isDeleteShowing to true/false. Lastly, in your getView, you show/hide of the button there depending on isDeleteShowing for that data row.

Hope this all helps.