我需要获取VerticalGridFragment的选定/焦点项目索引。我找到了在文档https://developer.android.com/reference/android/support/v17/leanback/app/VerticalGridFragment.html中设置所选项的方法, 即 setSelectedPosition(int position),用于设置所选项目位置。
但我无法在文档中找到提供所选项目或其索引的任何方法。
有人可以帮我找一个工作来获取VerticalGridFragment的选定项目吗?
答案 0 :(得分:2)
您将获得所选项目位置。
private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
@Override
public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) {
int position= mAdapter.indexOf(item);
}
}
答案 1 :(得分:2)
当行或项目被选中时,您可以使用Leanback中的OnItemViewSelectedListener
界面来接收通知。
看到当前选择的概念不同于焦点。可以在没有焦点的情况下选择行或项目。例如,当行标题视图获得焦点时,相应的行视图将被选中。
mRowsAdapter是您的ArrayObjectAdapter
,只需少量转换即可获取当前行索引和当前项目索引。
因此,首先获得行适配器,然后将行适配器转换为ArrayObjectAdapter,您将获得在这些行中保存项目的适配器(仅行适配器)。
OnItemViewSelectedListener { itemViewHolder, item, rowViewHolder, row ->
val indexOfRow = mRowsAdapter.indexOf(row)
val indexOfItem = ((row as ListRow).adapter as ArrayObjectAdapter).indexOf(item)
Toast.makeText(context, "$indexOfItem-$indexOfRow", Toast.LENGTH_SHORT).show()
}
}
答案 2 :(得分:0)
您无法获得聚焦位置,但您可以获得聚焦对象。在下面的setAdapter(mAdapter);
下面你可以写:
setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
@Override
public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) {
Object object = (Object) item;
//can write somethings here
}
});