【问题标题】:How to implement a longClickListener on BrowseFragment (Android Leanback Library)如何在 BrowseFragment 上实现 longClickListener(Android Leanback 库)
【发布时间】:2015-05-11 09:23:28
【问题描述】:
我在我的一个项目中使用 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
【问题讨论】:
标签:
android
onitemlongclicklistener
leanback
【解决方案1】:
我不知道你是否得到了答案,但你会想要添加自己的 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);