android tv -Reloading适配器数据

pri*_*rit 6 android-tv leanback

我想在浏览片段中重新加载一些行数据.

基本上我想重置适配器数据而不会在浏览片段中产生类似闪存的效果.知道如何做到这一点?

类似于列表视图中的notifyDataSetChanged().

感谢名单

Mar*_*sco 5

这将刷新数据而不会丢失当前位置:

for (int i = 0; i < mAdapter.size(); i++) {
    ListRow listRow = ((ListRow) mAdapter.get(i));
    ArrayObjectAdapter listRowAdapter = ((ArrayObjectAdapter) listRow.getAdapter());
    if (listRowAdapter.size() > 0) {
        listRowAdapter.notifyArrayItemRangeChanged(0, listRowAdapter.size());
    }
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*ker 1

我在这个问题中回答了类似的问题: Dynamically add more cards in a list Row android TV Leanback

我将从那里复制我的答案。希望这有帮助。

向演示者添加项目;

CardPresenter channelCardPresenter = new CardPresenter();
ArrayObjectAdapter channelRowAdapter = new ArrayObjectAdapter(channelCardPresenter);
channelRowAdapter.add(new Movie("Movie Title"));
HeaderItem header = new HeaderItem(0, "My Channels");
mRowsAdapter.add(new ListRow(header, channelRowAdapter));
Run Code Online (Sandbox Code Playgroud)

当然,这可能仅适用于您第一次创建 UI。未来的时代可能不会这样做。在我的应用程序CumulusTV中,我创建了一个方法,每次我想要对应用程序进行完全重绘时都会调用该方法:

public void refreshUI() {
    prepareBackgroundManager();
    setupUIElements();
    loadRows(); //Generate and populate all the rows
    setupEventListeners();
}
Run Code Online (Sandbox Code Playgroud)