大佬教程收集整理的这篇文章主要介绍了android – 如何在recyclerview上启用和禁用拖放,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试过改变ItemTouchCallBACk中的东西,包括移动标志和isLongPressDragEnabled无济于事.长按继续开始拖动事件.
我目前的解决方案是分离并重新连接片段,然后再次进入编辑模式时添加回调,但是我希望有一些更清洁的东西,我想念.
打回来:
public class ItemTouchCallBACk extends itemtouchhelper.CallBACk { private final itemtouchhelperAdapter mAdapter; public ItemTouchCallBACk(itemtouchhelperAdapter mAdapter) { this.mAdapter = mAdapter; } @Override public int getMovementFlags(RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder) { int dragFlags = itemtouchhelper.START | itemtouchhelper.END |itemtouchhelper.DOWN | itemtouchhelper.UP; return makeMovementFlags(dragFlags,0); } @Override public Boolean onMove(RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder,RecyclerView.ViewHolder target) { mAdapter.onItemMove(viewHolder.getAdapterPosition(),target.getAdapterPosition()); return true; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder,int direction) { } @Override public Boolean isLongPressDragEnabled() { return true; } @Override public Boolean isItemViewSwipeEnabled() { return false; } @Override public void onSELEctedChanged(RecyclerView.ViewHolder viewHolder,int actionStatE) { if (actionState != itemtouchhelper.ACTION_STATE_IDLE) { if (viewHolder instanceof itemtouchhelperViewHolder) { itemtouchhelperViewHolder itemViewHolder = (itemtouchhelperViewHolder) viewHolder; itemViewHolder.onItemSELEcted(); } } super.onSELEctedChanged(viewHolder,actionStatE); } @Override public void clearView(RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder) { if (viewHolder instanceof itemtouchhelperViewHolder) { itemtouchhelperViewHolder itemViewHolder = (itemtouchhelperViewHolder) viewHolder; itemViewHolder.onItemClear(); } } }
适配器:
public interface itemtouchhelperAdapter { void onItemMove(int fromPosition,int toPosition); void onItemDismiss(int position); }
分段:
@Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceStatE) { View rootView = inflater.inflate(R.layout.fragment_rectangle_switches,container,falsE); ButterKnife.bind(this,rootView); // Note: title set by AmbientPagerFragment layoutManager = new linearlayoutmanager(getActivity(),linearlayoutmanager.HORIZONTAL,falsE); recyclerView.setLayoutManager(layoutManager); adapter = new SwitchAdapter(switchList,dimmableList,ghostList,editMode,bus); recyclerView.setAdapter(adapter); displaySwitches(); return rootView; } @Override public Boolean onOptionsItemSELEcted(MenuItem item) { switch (item.getItemId()) { case R.id.icon_edit: editMode = true; changeEditMode(); break; case R.id.icon_cancel: editMode = false; changeEditMode(); break; } return super.onOptionsItemSELEcted(item); } public void changeEditMode() { bus.post(new EditModeEvent(editModE)); reattachFragment(); displaySwitches(); getActivity().invalidateOptionsMenu(); } private void displaySwitches() { if (editModE) { callBACk = new ItemTouchCallBACk((itemtouchhelperAdapter) adapter); mTouchHelper = new itemtouchhelper(callBACk); mTouchHelper.attachToRecyclerView(recyclerView); } } private void reattachFragment(){ ft = getFragmentManager().begintransaction(); ft.detach(this).attach(this).commit(); }
谢谢.
以上是大佬教程为你收集整理的android – 如何在recyclerview上启用和禁用拖放全部内容,希望文章能够帮你解决android – 如何在recyclerview上启用和禁用拖放所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。