Search in sources :

Example 66 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project 91Pop by DanteAndroid.

the class BaseMainFragment method initItemTouchHelper.

private void initItemTouchHelper(final SortCategoryAdapter sortCategoryAdapter, RecyclerView sortCategoryRecyclerView, final List<Category> categoryList) {
    // itemHelper的回调
    ItemTouchHelper.Callback callback = new ItemTouchHelper.Callback() {

        @Override
        public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            // 也就是说返回值是组合式的
            // makeMovementFlags (int dragFlags, int swipeFlags),看下面的解释说明
            int swipFlag = 0;
            // 如果也监控左右方向的话,swipFlag=ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT;
            int dragflag = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
            // 等价于:0001&0010;多点触控标记触屏手指的顺序和个数也是这样标记哦
            return makeMovementFlags(dragflag, swipFlag);
        }

        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            // 直接按照文档来操作啊,这文档写得太给力了,简直完美!
            sortCategoryAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
            // 注意这里有个坑的,itemView 都移动了,对应的数据也要移动
            Collections.swap(categoryList, viewHolder.getAdapterPosition(), target.getAdapterPosition());
            return true;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        // 暂不处理,处理左右滑动
        }

        @Override
        public boolean canDropOver(RecyclerView recyclerView, RecyclerView.ViewHolder current, RecyclerView.ViewHolder target) {
            return true;
        }

        @Override
        public boolean isLongPressDragEnabled() {
            // return true后,可以实现长按拖动排序和拖动动画了
            return false;
        }

        @Override
        public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
            if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
                viewHolder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.sort_category_drag_color));
            }
            super.onSelectedChanged(viewHolder, actionState);
        }

        @Override
        public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            super.clearView(recyclerView, viewHolder);
            viewHolder.itemView.setBackgroundColor(0);
        }
    };
    // 1.创建item helper
    mItemTouchHelper = new ItemTouchHelper(callback);
    // 2.绑定到recyclerview上面去
    mItemTouchHelper.attachToRecyclerView(sortCategoryRecyclerView);
}
Also used : ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) BaseViewHolder(com.chad.library.adapter.base.BaseViewHolder) RecyclerView(android.support.v7.widget.RecyclerView)

Example 67 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project SMSBlocker by sagarpawardev.

the class StarredSMSActivity method process.

private void process() {
    final String methodName = "process()";
    log.justEntered(methodName);
    adapter = new RVStarredSMSAdapter(this, smses, this);
    RVDragCallback dragCallback = new RVDragCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
    new ItemTouchHelper(dragCallback).attachToRecyclerView(rvStarredSMS);
    layoutManager = new LinearLayoutManager(this);
    rvStarredSMS.setLayoutManager(layoutManager);
    rvStarredSMS.setAdapter(adapter);
    log.returning(methodName);
}
Also used : ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) RVStarredSMSAdapter(dev.sagar.smsblocker.ux.adapters.RVStarredSMSAdapter) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager)

Example 68 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project GeekNews by codeestX.

the class GoldManagerActivity method initEventAndData.

@Override
protected void initEventAndData() {
    setToolBar(toolBar, "首页特别展示");
    mList = ((GoldManagerBean) getIntent().getParcelableExtra(Constants.IT_GOLD_MANAGER)).getManagerList();
    mAdapter = new GoldManagerAdapter(mContext, mList);
    rvGoldManagerList.setLayoutManager(new LinearLayoutManager(mContext));
    rvGoldManagerList.setAdapter(mAdapter);
    mCallback = new DefaultItemTouchHelpCallback(new DefaultItemTouchHelpCallback.OnItemTouchCallbackListener() {

        @Override
        public void onSwiped(int adapterPosition) {
        }

        @Override
        public boolean onMove(int srcPosition, int targetPosition) {
            if (mList != null) {
                Collections.swap(mList, srcPosition, targetPosition);
                mAdapter.notifyItemMoved(srcPosition, targetPosition);
                return true;
            }
            return false;
        }
    });
    mCallback.setDragEnable(true);
    mCallback.setSwipeEnable(false);
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(mCallback);
    itemTouchHelper.attachToRecyclerView(rvGoldManagerList);
}
Also used : DefaultItemTouchHelpCallback(com.codeest.geeknews.widget.DefaultItemTouchHelpCallback) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) GoldManagerAdapter(com.codeest.geeknews.ui.gold.adapter.GoldManagerAdapter) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager)

Example 69 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project VirtualApp by asLody.

the class HomeActivity method initLaunchpad.

private void initLaunchpad() {
    mLauncherView.setHasFixedSize(true);
    StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3, OrientationHelper.VERTICAL);
    mLauncherView.setLayoutManager(layoutManager);
    mLaunchpadAdapter = new LaunchpadAdapter(this);
    SmartRecyclerAdapter wrap = new SmartRecyclerAdapter(mLaunchpadAdapter);
    View footer = new View(this);
    footer.setLayoutParams(new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, VUiKit.dpToPx(this, 60)));
    wrap.setFooterView(footer);
    mLauncherView.setAdapter(wrap);
    mLauncherView.addItemDecoration(new ItemOffsetDecoration(this, R.dimen.desktop_divider));
    ItemTouchHelper touchHelper = new ItemTouchHelper(new LauncherTouchCallback());
    touchHelper.attachToRecyclerView(mLauncherView);
    mLaunchpadAdapter.setAppClickListener((pos, data) -> {
        if (!data.isLoading()) {
            if (data instanceof AddAppButton) {
                onAddAppButtonClick();
            }
            mLaunchpadAdapter.notifyItemChanged(pos);
            mPresenter.launchApp(data);
        }
    });
}
Also used : ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) AddAppButton(io.virtualapp.home.models.AddAppButton) StaggeredGridLayoutManager(android.support.v7.widget.StaggeredGridLayoutManager) ItemOffsetDecoration(io.virtualapp.home.adapters.decorations.ItemOffsetDecoration) SmartRecyclerAdapter(io.virtualapp.abs.nestedadapter.SmartRecyclerAdapter) View(android.view.View) TextView(android.widget.TextView) TwoGearsView(io.virtualapp.widgets.TwoGearsView) RecyclerView(android.support.v7.widget.RecyclerView) LaunchpadAdapter(io.virtualapp.home.adapters.LaunchpadAdapter)

Example 70 with ItemTouchHelper

use of android.support.v7.widget.helper.ItemTouchHelper in project GeekNews by codeestX.

the class LikeFragment method initEventAndData.

@Override
protected void initEventAndData() {
    mList = new ArrayList<>();
    mAdapter = new LikeAdapter(mContext, mList);
    rvLikeList.setLayoutManager(new LinearLayoutManager(mContext));
    rvLikeList.setAdapter(mAdapter);
    mCallback = new DefaultItemTouchHelpCallback(new DefaultItemTouchHelpCallback.OnItemTouchCallbackListener() {

        @Override
        public void onSwiped(int adapterPosition) {
            // 滑动删除的时候,从数据库、数据源移除,并刷新UI
            if (mList != null) {
                mPresenter.deleteLikeData(mList.get(adapterPosition).getId());
                mList.remove(adapterPosition);
                mAdapter.notifyItemRemoved(adapterPosition);
            }
        }

        @Override
        public boolean onMove(int srcPosition, int targetPosition) {
            if (mList != null) {
                // 更换数据库中的数据Item的位置
                boolean isPlus = srcPosition < targetPosition;
                mPresenter.changeLikeTime(mList.get(srcPosition).getId(), mList.get(targetPosition).getTime(), isPlus);
                // 更换数据源中的数据Item的位置
                Collections.swap(mList, srcPosition, targetPosition);
                // 更新UI中的Item的位置,主要是给用户看到交互效果
                mAdapter.notifyItemMoved(srcPosition, targetPosition);
                return true;
            }
            return false;
        }
    });
    mCallback.setDragEnable(true);
    mCallback.setSwipeEnable(true);
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(mCallback);
    itemTouchHelper.attachToRecyclerView(rvLikeList);
    mPresenter.getLikeData();
}
Also used : DefaultItemTouchHelpCallback(com.codeest.geeknews.widget.DefaultItemTouchHelpCallback) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) LikeAdapter(com.codeest.geeknews.ui.main.adapter.LikeAdapter) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager)

Aggregations

ItemTouchHelper (android.support.v7.widget.helper.ItemTouchHelper)124 RecyclerView (android.support.v7.widget.RecyclerView)93 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)84 View (android.view.View)67 TextView (android.widget.TextView)25 ImageView (android.widget.ImageView)24 ViewGroup (android.view.ViewGroup)20 Toolbar (android.support.v7.widget.Toolbar)16 LayoutInflater (android.view.LayoutInflater)14 SearchView (android.support.v7.widget.SearchView)12 Intent (android.content.Intent)11 DefaultItemAnimator (android.support.v7.widget.DefaultItemAnimator)11 DialogInterface (android.content.DialogInterface)10 Canvas (android.graphics.Canvas)9 Bundle (android.os.Bundle)9 BindView (butterknife.BindView)9 Nullable (android.support.annotation.Nullable)8 FloatingActionButton (android.support.design.widget.FloatingActionButton)8 ArrayList (java.util.ArrayList)8 Context (android.content.Context)7