布局是基本的:顶部有一个 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
}
}