如何获取 selected/focused 项或其在 Android 的 VerticalGridFragment class 中的索引?
How to get selected/focused item or it's index in VerticalGridFragment class of Android?
我需要获取 VerticalGridFragment 的 selected/focused 项索引。我在文档https://developer.android.com/reference/android/support/v17/leanback/app/VerticalGridFragment.html中找到了设置选中项的方法,
即 setSelectedPosition(int position) 设置所选项目的位置。
但是我在文档中找不到任何提供所选项目或其索引的方法。
有人可以帮我找到解决方法来获取 VerticalGridFragment 的选定项目吗?
无法获取对焦位置,但可以获取对焦对象。在方法 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
}
});
您获得了所选项目的位置。
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);
}
}
您可以使用 Leanback 中的 OnItemViewSelectedListener
界面在行或项目被选中时接收通知。
看到当前选择的概念不同于焦点。可以在没有焦点的情况下选择行或项目。例如,当行 header 视图获得焦点时,相应的行视图将被选中。
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()
}
}
我需要获取 VerticalGridFragment 的 selected/focused 项索引。我在文档https://developer.android.com/reference/android/support/v17/leanback/app/VerticalGridFragment.html中找到了设置选中项的方法, 即 setSelectedPosition(int position) 设置所选项目的位置。
但是我在文档中找不到任何提供所选项目或其索引的方法。
有人可以帮我找到解决方法来获取 VerticalGridFragment 的选定项目吗?
无法获取对焦位置,但可以获取对焦对象。在方法 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
}
});
您获得了所选项目的位置。
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);
}
}
您可以使用 Leanback 中的 OnItemViewSelectedListener
界面在行或项目被选中时接收通知。
看到当前选择的概念不同于焦点。可以在没有焦点的情况下选择行或项目。例如,当行 header 视图获得焦点时,相应的行视图将被选中。
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()
}
}