使用SelectionTracker在RecycleView中删除项目
我有一个RecyclerView,我正在实现一个SelectionTracker。在我的RecyclerView的每个项目中,我都有一个imageview,其中有一个OnClickListener要删除。选择SelectionTracker项的状态时,不会触发要删除的OnClickListener
我的SelectionTracker生成器:
SelectionTracker<Long> selectionTracker = new SelectionTracker.Builder( "macro-item-selection-tracker", mRecyclerView, new MacroItemRecyclerViewAdapter.PositionKeyProvider(mMacroItemsAdapter), new MacroItemDetailsLookup(mRecyclerView), StorageStrategy.createLongStorage()) .withSelectionPredicate(SelectionPredicates.createSelectSingleAnything()) .build();
删除单击侦听器:
public class DeleteMacroItemClickListener implements View.OnClickListener { @Override public void onClick(View view) { MacroItemViewHolderAction actions = getViewHolderActionSafety(view); actions.handleClickDeleteMacroItem(mMacroItem); } }
inSelectionHotspot for identify单击区域图像删除:
@Override public boolean inSelectionHotspot(@NonNull MotionEvent e) { Rect rect = new Rect(); mDeleteMacroItem.getDrawingRect(rect); int[] locationOnScreen = new int[2]; mDeleteMacroItem.getLocationOnScreen(locationOnScreen); if (((e.getRawX() > locationOnScreen[0] && (e.getRawX() < locationOnScreen[0] + mDeleteMacroItem.getWidth()))) && (e.getRawY() > locationOnScreen[1] && (e.getRawY() < locationOnScreen[1] + mDeleteMacroItem.getHeight()))) { return false; } else { return true; } // return !rect.contains((int) e.getX(), (int) e.getY()); }
# 1 楼答案
在选择跟踪器中添加一个观察者
像这样: