行BrowseFragment中的最后一个元素

And*_*ets 1 android android-fragments android-tv leanback

我有一个片段:

public class FilmFragment extends BrowseFragment implements LoaderManager.LoaderCallbacks<Object>
Run Code Online (Sandbox Code Playgroud)

BrowseFragment中,添加包含项目的几行:

private void loadRubricsFilms(List<Rubric> mRubrics, List<Film> mFilms) {
    int j = 0;

    for (Rubric mRubric : mRubrics) {
        ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(mCardPresenter);

        for (Film mFilm : mFilms) {
            if (mFilm.getRubric() == mRubric.getId()) {
                listRowAdapter.add(mFilm);
            }
        }
        HeaderItem header = new HeaderItem(j++, mRubric.getTitle());
        mRowsAdapter.add(new ListRow(header, listRowAdapter));
    }
    setAdapter(mRowsAdapter);
}
Run Code Online (Sandbox Code Playgroud)

我安装了OnItemViewSelectedListener侦听器:

    private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
    @Override
    public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
                               RowPresenter.ViewHolder rowViewHolder, Row row) {
    }
}

    setOnItemViewSelectedListener(new ItemViewSelectedListener());
Run Code Online (Sandbox Code Playgroud)

覆盖方法onItemSelected

    @Override
    public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
                               RowPresenter.ViewHolder rowViewHolder, Row row) {
    }
Run Code Online (Sandbox Code Playgroud)

我需要检测何时选择了行中的最后一项。如何确定?

Kyl*_*enn 5

你可以得到所有您需要的信息出来的Row rowObject itemArrayObjectAdapterRow那些在交回onItemSelected(...)事件。

就像是:

final ListRow listRow = (ListRow) row;
final ArrayObjectAdapter currentRowAdapter = listRow.getAdapter();
int selectedIndex = currentRowAdapter.indexOf(item);
if (selectedIndex != -1 && (currentRowAdapter.size() - 1) == selectedIndex ) {
    // The last item was selected
}
Run Code Online (Sandbox Code Playgroud)