为什么在屏幕方向更改后,ArrayAdapter过滤器不正确?
-
26-09-2019 - |
题
布局是基本的:顶部的EditText,其次是listView。 EditText具有textWatcher.OntextChanged已实现,以便使用输入的文本调用ArrayAdapter.getFilter.filter。 ArrayAdapter的数据在简历上不同步(请参见下面的代码段)。很容易,工作也很好...直到更改屏幕方向为止。当手机侧向转动时,为什么过滤会突然破裂?
public class SometActivity extends ListActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
...
listAdapter = new ArrayAdapter<MemoryStatistic>(this, R.layout.list_item);
setListAdapter(listAdapter);
searchText = (EditText)findViewById(R.id.searchText);
searchText.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence text, int start, int before, int count)
{
listAdapter.getFilter().filter(text);
}
...
}
...
}
@Override
protected void onResume()
{
asyncRefreshListAdapter();//refresh the data asynchronously when activity is resumed
}
}
解决方案
我以为我会做出这个自我缩短的帖子,以防其他适合Android开发的程序员(像我一样)被这对此感到困惑。所以,根据 Android参考 仅当活动是
1)创建
2)重新启动
3)恢复(简历后带到前景)
好的,那么屏幕方向与此有什么关系?好吧,大多数阅读文档的开发人员浏览了它,因为有很多要阅读的事实,他们只是想实现很酷的东西。我没什么不同。如果我还读了进一步的阅读,我会避免稍后遇到很多头痛:
除非另外指定,否则配置更改(例如屏幕方向的更改,语言,输入设备等)将导致您当前的活动被破坏
现在很明显,为什么过滤器无法正常工作。问题在于(一旦活动在屏幕方向上破坏了)litchadapter并未完全或根本没有填充(由于刷新的异步性),然后才能开始过滤。
不隶属于 StackOverflow