0

I am using the browsefragment of the Leanback Library in one oy my projects.

simple button press on an item is detected by setting up the browsefragements setOnItemViewClickedListener.

i want to detect a longpress on an item. any tips?

setOnItemViewClickedListener( getDefaultItemClickedListener() );

protected OnItemViewClickedListener getDefaultItemClickedListener() {

        return new OnItemViewClickedListener() {

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

            }
        };
    }

thanks in advance dd

Alex Fillips
  • 391
  • 1
  • 3
  • 8

1 Answers1

2

I don't know if you got your answer, but you're going to want to add your own Presenter subclass, like this:

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

    ...

}

You might need to use a ClassPresenterSelector at your row/fragment adapter level if you have multiple types that require different long press actions, or you can do a switch() or if/else tree inside the onBindViewHolder().

mPresenterSelector = new ClassPresenterSelector();
mPresenterSelector.addClassPresenter(NormalItem.class, new CardViewPresenter());
mPresenterSelector.addClassPresenter(CustomItem.class, new LongPressItemPresenter());
mAdapter = new ArrayObjectAdapter(mPresenterSelector);
setAdapter(mAdapter);
wblaschko
  • 3,252
  • 1
  • 18
  • 24