以在屏幕上顯示當前顯示列表項的首字母以便於用戶在列表中搜索。
本例是通過在屏幕中央顯示一個文本框來實現的,通過WindowManager 為ListActivity缺省的窗口動態添加這個TextView.和大都數Android服務一樣,WindowManager也是通過getSystemService來獲取服務對象:
[java]
mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
為ListView 添加Scroll 事件處理:
[java]
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;
}
}
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;
}
}
通過mHandler 在UI線程中發送消息,Android 系統Handler用法簡介。