0

我在我的一个项目中使用 Leanback 库的浏览片段。

通过设置浏览片段 setOnItemViewClickedListener 来检测项目上的简单按钮按下。

我想检测一个项目的长按。有小费吗?

setOnItemViewClickedListener( getDefaultItemClickedListener() );

protected OnItemViewClickedListener getDefaultItemClickedListener() {

        return new OnItemViewClickedListener() {

            @Override
            public void onItemClicked(Presenter.ViewHolder viewHolder, Object item, RowPresenter.ViewHolder viewHolder2, Row row) {

            }
        };
    }

提前谢谢dd

4

1 回答 1

2

我不知道你是否得到了答案,但你会想要添加自己的 Presenter 子类,如下所示:

private static class LongPressItemPresenter extends Presenter {

    ...

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, Object object) {
        viewHolder.view.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                //todo do something here specific to this item
            }
        });
    }

    ...

}

如果您有多种类型需要不同的长按操作,您可能需要在行/片段适配器级别使用ClassPresenterSelector ,或者您可以在 onBindViewHolder() 内执行 switch() 或 if/else 树。

mPresenterSelector = new ClassPresenterSelector();
mPresenterSelector.addClassPresenter(NormalItem.class, new CardViewPresenter());
mPresenterSelector.addClassPresenter(CustomItem.class, new LongPressItemPresenter());
mAdapter = new ArrayObjectAdapter(mPresenterSelector);
setAdapter(mAdapter);
于 2016-01-04T23:05:23.820 回答