我想重新加载浏览片段中的一些行数据。
基本上,我希望重置适配器数据,而不会在浏览片段中产生类似flash的效果。你知道怎么做吗?
类似于列表视图中的notifyDataSetChanged()。
谢谢
发布于 2017-01-03 21:28:52
这将刷新数据而不会丢失当前位置:
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());
}
}发布于 2015-11-24 02:24:12
我在这个问题中回答了类似的问题: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));当然,这可能只在您第一次创建UI时有效。未来的时代可能不会这样做。在我的应用程序CumulusTV中,我创建了一个方法,每次我想要对该应用程序进行完全重绘时,都会调用该方法:
public void refreshUI() {
prepareBackgroundManager();
setupUIElements();
loadRows(); //Generate and populate all the rows
setupEventListeners();
}发布于 2016-07-28 01:59:27
您可以创建自己的适配器并添加新的replaceAll()方法。
public void replaceAll(Collection items){
int itemsCount = items.size();
if (itemsCount == 0){
return;
}
mItems.clear();
mItems.addAll(index, items);
notifyItemRangeChanged(0, itemsCount);
}完整来源:link
https://stackoverflow.com/questions/33870065
复制相似问题