首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓电视-Reloading适配卡数据

安卓电视-Reloading适配卡数据
EN

Stack Overflow用户
提问于 2015-11-23 19:32:35
回答 5查看 3.8K关注 0票数 8

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

基本上,我希望重置适配器数据,而不会在浏览片段中产生类似flash的效果。你知道怎么做吗?

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

谢谢

EN

回答 5

Stack Overflow用户

发布于 2017-01-03 21:28:52

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

代码语言:javascript
复制
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());
    }
}
票数 5
EN

Stack Overflow用户

发布于 2015-11-24 02:24:12

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

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

向演示者添加项目;

代码语言:javascript
复制
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));

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

代码语言:javascript
复制
public void refreshUI() {
    prepareBackgroundManager();
    setupUIElements();
    loadRows(); //Generate and populate all the rows
    setupEventListeners();
}
票数 1
EN

Stack Overflow用户

发布于 2016-07-28 01:59:27

您可以创建自己的适配器并添加新的replaceAll()方法。

代码语言:javascript
复制
public void replaceAll(Collection items){
 int itemsCount = items.size();
 if (itemsCount == 0){
    return;
 }
 mItems.clear();
 mItems.addAll(index, items);
 notifyItemRangeChanged(0, itemsCount);
}

完整来源:link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33870065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档