gpt4 book ai didi

java - 使用 SelectionTracker 删除 RecycleView 中的项目

转载 作者:行者123 更新时间:2023-12-05 00:05:48 25 4
gpt4 key购买 nike

我有一个 RecyclerView,我正在实现一个 SelectionTracker。在我的 RecyclerView 的每个项目中,我都有一个带有要删除的 OnClickListener 的 ImageView 。选择 SelectionTracker 项目的状态时,不会触发我要删除的 OnClickListener。

enter image description here

  1. 我的 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();
  2. 删除点击监听器:

    public class DeleteMacroItemClickListener implements View.OnClickListener {
    @Override
    public void onClick(View view) {
    MacroItemViewHolderAction actions = getViewHolderActionSafety(view);
    actions.handleClickDeleteMacroItem(mMacroItem);
    }
    }
  3. inSelectionHotspot 用于识别点击区域图像删除:

    @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());
    }

最佳答案

向您的选择跟踪器添加一个观察者

像这样:

selectionTracker?.addObserver(object : SelectionTracker.SelectionObserver<Long>(){
override fun onSelectionChanged() {
super.onSelectionChanged()
//onClick for that ImageView
}
})

关于java - 使用 SelectionTracker 删除 RecycleView 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com