【问题标题】:The last element in the row BrowseFragmentBrowseFragment 行中的最后一个元素
【发布时间】:2016-10-13 14:26:10
【问题描述】:

我有一个片段:

public class FilmFragment extends BrowseFragment implements LoaderManager.LoaderCallbacks<Object>

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

我安装了 OnItemViewSelectedListener 监听器:

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

    setOnItemViewSelectedListener(new ItemViewSelectedListener());

覆盖方法onItemSelected

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

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

【问题讨论】:

  • 不完整的问题,请输入您的完整代码,并更具体地说明您的问题。
  • 添加了有问题的其他方法

标签: android android-fragments android-tv leanback


【解决方案1】:

您可以从Row 上的Row rowObject itemArrayObjectAdapter 中获取所需的所有信息,这些信息在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
}

【讨论】:

  • 感谢您的回答!但是没有RowgetArrayAdapter ()类的方法。
  • 我刚刚进行了编辑以解决此问题。 ListRow 具有 getAdapter() 方法。您可能希望将演员表包装在instanceof 检查中以确保安全,但基于此行:mRowsAdapter.add(new ListRow(header, listRowAdapter));,您应该是安全的。
  • 一切正常!非常感谢!更正了if 块中变量索引的名称。
猜你喜欢
  • 2017-11-28
  • 2017-02-06
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
相关资源
最近更新 更多