android-fragments 如何在Android的VerticalGridFragment类中获取选定/聚焦的项或其索引?

eanckbw9  于 2022-11-14  发布在  Android
关注(0)|答案(4)|浏览(132)

我需要获取VerticalGridFragment的选定/焦点项的索引。我在文档https://developer.android.com/reference/android/support/v17/leanback/app/VerticalGridFragment.html中找到了设置选定项的方法,即setSelectedPosition(int position),它设置选定项的位置。
但是我在文档中找不到任何提供所选Item或其索引的方法。

有人能帮我找到一个变通办法来获取VerticalGridFragment的选定项吗?

iyfjxgzm

iyfjxgzm1#

您将获得所选项目位置

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

        }
}
dnph8jn4

dnph8jn42#

您可以使用Leanback中的OnItemViewSelectedListener接口在选中行或项时接收通知。
当前选择的概念与焦点不同。可以选择没有焦点的行或项。例如,当行标题视图获得焦点时,相应的行视图也会被选中。
mRowsAdapter是您的ArrayObjectAdapter,需要进行几次类型转换来获取当前行索引和当前项索引。
因此,首先获得rows适配器,然后通过将rows适配器转换为ArrayObjectAdapter,获得用于保存这些行中的项的适配器(它只是rows适配器)。

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()

            }
        }
bttbmeg0

bttbmeg03#

你不能得到聚焦位置,但你可以得到聚焦物体。下面的方法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
        }
    });
x8goxv8g

x8goxv8g4#

获取所选/焦点项或其在后倾片段中索引,

setOnItemViewSelectedListener { itemViewHolder, item, rowViewHolder, row ->
            if (item is AssetData) {
                val indexOfItem = ((row as ListRow).adapter as ArrayObjectAdapter).indexOf(item)
                selectedPosition!!.getItemPosition(indexOfItem)
            }
        }

相关问题