首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义卷帘ItemTouchHelper

自定义卷帘ItemTouchHelper
EN

Stack Overflow用户
提问于 2016-10-22 16:51:25
回答 1查看 1.3K关注 0票数 0

嗨,我已经向我的列表视图添加了ItemTouchHelper,我已经做了MyItemTouchHelper.attachToRecyclerView(myRecyclerView),,然后我已经实现了向右滑动的代码:

代码语言:javascript
复制
private ItemTouchHelper itemTouchHelperEventi = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
        return false;
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {


            Evento ev = lista_eventi.get(viewHolder.getAdapterPosition());
            analizzaEvento = new AnalizzaEvento(ev.getNome_evento());
            adapterRecyclerViewEventi.remove(positionForResult);



        adapterRecyclerViewEventi.notifyDataSetChanged();
    }
});

现在我想实现滑动代码来删除项目如何gmail,我希望当我滑动到右边的背景行变成红色,在行的左边有标签撤消,在行的右边有标签删除(或确认)如果我点击右边我删除项目如果我点击左边返回到以前的情况。

请不要链接其他库我想在不使用外部库的情况下在我的代码中添加此功能,我不想只为此功能重写所有代码。

有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-22 17:28:56

以下是示例代码

代码语言:javascript
复制
 ItemTouchHelper.Callback simpleItemTouchCallback=new ItemTouchHelper.Callback() {
                            @Override
                            public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {

                                //Unlock the movement of the item 
                               //If you want only left to right unlock that moment only 

                                int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
                                int swipeFlags;
                                if(viewHolder instanceof HeterogenousAdapter.ImageViewHolder)
                                    swipeFlags = ItemTouchHelper.ANIMATION_TYPE_SWIPE_CANCEL ;
                                else
                                    swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END ;
                                return makeMovementFlags(dragFlags, swipeFlags);
                            }

                            @Override
                            public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {

                            }

                            @Override
                            public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {

                               //when user swiped this method getting call

                                int position = viewHolder.getAdapterPosition();
                                if (direction == ItemTouchHelper.LEFT){
                                    adapter.removeItem(position);
                                }else {
                                    removeView();
                                    edit_position = position;
                                    alertDialog.setTitle("Edit Country");
                                    if (objectsArrayList.get(position) instanceof UserInfo){
                                        UserInfo userInfo= (UserInfo) objectsArrayList.get(position);
                                        et_country.setText(userInfo.getFirstName());
                                    }else {
                                        String abc= (String) objectsArrayList.get(position);
                                        et_country.setText("ESHVAR");
                                    }

                                    alertDialog.show();
                                }
                            }

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

                                 //when swiped started what you wants to do
                                 //Here you can set Red color with icon on it

                                Bitmap icon;
                                if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE){
                                    View itemView = viewHolder.itemView;
                                    float height=(float) itemView.getBottom() - (float) itemView.getTop();
                                    float width =height/3;

                                    if (dX > 0){
                                        paint.setColor(Color.parseColor("#388e3c"));
                                        RectF background = new RectF(
                                                (float)itemView.getLeft(),
                                                (float)itemView.getTop(),
                                                    dX,
                                                (float)itemView.getBottom());
                                                c.drawRect(background,paint);
                                        icon = BitmapFactory.decodeResource(getResources(),R.drawable.action_search);
                                        RectF icon_dest = new RectF(
                                                                (float)itemView.getLeft()+width,
                                                                itemView.getTop()+width,
                                                                (float)itemView.getLeft()+2*width,
                                                                (float)itemView.getBottom() - width);
                                        c.drawBitmap(icon,null,icon_dest,paint);
                                    }else {
                                        paint.setColor(Color.parseColor("#d32f2f"));
                                        RectF background = new RectF(
                                                (float)itemView.getRight()+dX,
                                                (float)itemView.getTop(),
                                                (float)itemView.getRight(),
                                                (float)itemView.getBottom());
                                        c.drawRect(background,paint);
                                        icon =BitmapFactory.decodeResource(getResources(),R.drawable.action_search);
                                        RectF icon_dest=new RectF(
                                                (float)itemView.getRight()-2*width,
                                                (float)itemView.getTop()+width,
                                                (float)itemView.getRight() - width,
                                                (float)itemView.getBottom() - width);
                                        c.drawBitmap(icon,null,icon_dest,paint);
                                    }
                                }
                                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
                            }
                        };


    //Adding Recycle view to Item touch helper
    ItemTouchHelper itemTouchHelper=new ItemTouchHelper(simpleItemTouchCallback);
                        itemTouchHelper.attachToRecyclerView(recyclerView);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40190162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档