在notifyDataSetChanged不能在android中工作之后的smoothScrollToPosition

我有一个自定义适配器用于ListView设置并正常工作。 在按钮上单击基础数据中的某些内容,因此需要notifyDataSetChanged来刷新ListView。 精细。 但我也希望ListView滚动到发生更改的行。 为此,我在notifyDataSetChanged之后立即调用smoothScrollToPosition。 那是行不通的。

如果我不调用notifyDataSetChanged然后滚动工作,所以通知阻止滚动。 我可能正在与未来正在处理的事件进行斗争。 任何人都可以给我一个关于出了什么问题的指针吗?

Solutions Collecting From Web of "在notifyDataSetChanged不能在android中工作之后的smoothScrollToPosition"

调用notifyDataSetChanged()后,使用post()方法等待列表完成更新:

 adapter.notifyDataSetChanged(); list.post( new Runnable() { @Override public void run() { //call smooth scroll } }); 

我已经尝试了dmon的示例代码,我发现它并不总是有效。

实际上我发现了另一种执行滚动的方法:

 adapter.notifyDataSetChanged(); channelsListView.setSelection(scrollPos); // it works without smoothScrollToPositionFromTop(..) or smoothScrollToPosition() methods call. 

在这个答案阅读之后,我find了使用上述方法的主要想法: https : //stackoverflow.com/a/20997828/2133585