简体   繁体   中英

How to add swipe (onItemTouchHelper) feature to cardview android

在此处输入图像描述

I want this feature in my card view, but I don't know what it is called. I request you to change the title (if you know what is this feature) also. Edits are welcome.

Your title is mostly correct. You want to swipe recyclerView Items. I am not sure of listView. But, you can do it by recyclerView. I am implementing a link You can get the better explanation right there.

For clarification I am adding some source code.

public void showMenu(int position) {
    for(int i=0; i<list.size(); i++){
        list.get(i).setShowMenu(false);
    }
    list.get(position).setShowMenu(true);
    notifyDataSetChanged();
}


public boolean isMenuShown() {
    for(int i=0; i<list.size(); i++){
        if(list.get(i).isShowMenu()){
            return true;
        }
    }
    return false;
}

public void closeMenu() {
    for(int i=0; i<list.size(); i++){
        list.get(i).setShowMenu(false);
    }
    notifyDataSetChanged();
}

It used for showing menu.

ItemTouchHelper.SimpleCallback touchHelperCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
        private final ColorDrawable background = new ColorDrawable(getResources().getColor(R.color.background));

        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            adapter.showMenu(viewHolder.getAdapterPosition());
        }

        @Override
        public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);

            View itemView = viewHolder.itemView;

            if (dX > 0) {
                background.setBounds(itemView.getLeft(), itemView.getTop(), itemView.getLeft() + ((int) dX), itemView.getBottom());
            } else if (dX < 0) {
                background.setBounds(itemView.getRight() + ((int) dX), itemView.getTop(), itemView.getRight(), itemView.getBottom());
            } else {
                background.setBounds(0, 0, 0, 0);
            }

            background.draw(c);
        }
    };
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(touchHelperCallback);
    itemTouchHelper.attachToRecyclerView(recyclerView);

}

To show the menu on swipe.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM