小编dri*_*noo的帖子

Android recyclerview-selection实施?

我目前正在尝试recyclerview-selection从Android支持库28.0.0-alpha1 实现新的API,并且遇到了一些问题.我的目标是拥有一个RecyclerView能够选择多行,显示上下文操作栏并对其执行操作的功能,例如"删除"或"共享"

我会尝试提供足够的代码来充分了解正在发生的事情,但如果有必要,我总能回复更多.

在我Fragment包含RecyclerView我关注的内容中,我正在启动一个SelectionTracker,并将其设置在我的上面RecyclerView.Adapter,就像这样:

private void buildRecyclerView() {
    sheetsAdapter = new SheetsAdapter(getContext(), this, sheets);
    gridManager = new GridLayoutManager(getContext(), getResources().getInteger(R.integer.grid_span_count));

    ItemOffsetDecoration itemDecoration = new ItemOffsetDecoration(getContext(), R.dimen.item_offset);
    sheetsRecycler.addItemDecoration(itemDecoration);
    sheetsRecycler.setLayoutManager(gridManager);
    sheetsRecycler.setAdapter(sheetsAdapter);
    sheetsRecycler.setHasFixedSize(true);

    SelectionTracker selectionTracker = new SelectionTracker.Builder<>("sheet_selection",
                                                        sheetsRecycler,
                                                        new StableIdKeyProvider(sheetsRecycler),
                                                        new SheetDetailsLookup(sheetsRecycler),
                                                        StorageStrategy.createLongStorage())
                                                        .withOnContextClickListener(this)
                                                        .build();

    sheetsAdapter.setSelectionTracker(selectionTracker);
}
Run Code Online (Sandbox Code Playgroud)

Fragment也是implements OnContextClickListener为了收听我在我的项目中的长按RecyclerView:

@Override
public boolean onContextClick(@NonNull MotionEvent e) {
    if (actionMode != null) {
        return false;
    }

    // …
Run Code Online (Sandbox Code Playgroud)

android multipleselection android-actionmode android-recyclerview

6
推荐指数
2
解决办法
8884
查看次数