通过mHandler 在UI线程中发送消息,Android 系统Handler用法简介。
本例和前面例子Android ApiDemos示例解析(168):Views->Lists->1. Array 非常类似,显示一个Cheese数组,列表是按字母顺序排列的。对于长例表,在滚动时可以在屏幕上显示当前显示列表项的首字母以便于用户在列表中搜索。
本例是通过在屏幕中央显示一个文本框来实现的,通过WindowManager 为ListActivity缺省的窗口动态添加这个TextView.和大都数Android服务一样,WindowManager也是通过getSystemService来获取服务对象:
mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
为ListView 添加Scroll 事件处理:
getListView().setOnScrollListener(this);
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
int lastItem = firstVisibleItem + visibleItemCount - 1;
if (mReady) {
char firstLetter = mStrings[firstVisibleItem].charAt(0);
if (!mShowing && firstLetter != mPrevLetter) {
mShowing = true;
mDialogText.setVisibility(View.VISIBLE);
}
mDialogText.setText(((Character)firstLetter).toString());
mHandler.removeCallbacks(mRemoveWindow);
mHandler.postDelayed(mRemoveWindow, 3000);
mPrevLetter = firstLetter;
}
}