Android 删除SelectionTracker观察者

Android 删除SelectionTracker观察者,android,android-recyclerview,androidx,Android,Android Recyclerview,Androidx,在我的代码中,当单击recycler视图中的项目时,适配器将与新的适配器交换。之后,为新适配器制作了一个新的跟踪器和观测器。但在长时间的压迫下,前一个观察者被叫来了。我想知道是否可以从跟踪器中删除一个观察者,或者从recyclerview中删除一个item touch listener String id = "track" + mAdapter.getItemId(0); if(mAdapter.getTracker() != null) mTracker = mA

在我的代码中,当单击recycler视图中的项目时,适配器将与新的适配器交换。之后,为新适配器制作了一个新的跟踪器和观测器。但在长时间的压迫下,前一个观察者被叫来了。我想知道是否可以从跟踪器中删除一个观察者,或者从recyclerview中删除一个item touch listener

String id = "track" + mAdapter.getItemId(0);
    if(mAdapter.getTracker() != null) mTracker = mAdapter.getTracker();
    else {
        mTracker = new DefaultSelectionTracker.Builder<>(id, mRecyclerView,
                new MediaKeyProvider(mRecyclerView), setLookup(), StorageStrategy.createLongStorage())
                .withSelectionPredicate(SelectionPredicates.<Long>createSelectAnything())
                .build();

        mAdapter.passTracker(mTracker);
    }
    ((MainActivity) requireActivity()).observeFiles(mTracker, id);
mediakeyprovider

public class MediaKeyProvider extends ItemKeyProvider {

private RecyclerView mRecyclerView;

public MediaKeyProvider(RecyclerView rv){
    super(ItemKeyProvider.SCOPE_MAPPED);
    mRecyclerView = rv;
}
@Nullable
@Override
public Object getKey(int position) {
    long itemId = mRecyclerView.getAdapter().getItemId(position);
    return itemId == -1 ? RecyclerView.NO_ID : itemId;
}

@Override
public int getPosition(@NonNull Object key) {

    VideoFileAdapter.ViewHolder vh = (VideoFileAdapter.ViewHolder)  mRecyclerView.findViewHolderForItemId((Long) key);
    return vh == null ? RecyclerView.NO_POSITION : vh.getAdapterPosition();
}
}