我使用的是的AsyncTask類搜索詞,所以我希望出現的單詞列表 「搜索」在執行proccess如何使列表不可點擊?
好吧,我想要做的是有一個非可點擊列表,直到搜索完成,爲了,如果搜索單詞被點擊,什麼也沒有發生......
這是正確的方法嗎? 非常感謝!
我使用的是的AsyncTask類搜索詞,所以我希望出現的單詞列表 「搜索」在執行proccess如何使列表不可點擊?
好吧,我想要做的是有一個非可點擊列表,直到搜索完成,爲了,如果搜索單詞被點擊,什麼也沒有發生......
這是正確的方法嗎? 非常感謝!
當你加載,搜索和獲取數據可以顯示標題視圖或/和你ListView
一個頁腳視圖。只需在設置適配器之前添加這些視圖。當您搜索某個詞時,請致電setClickable(false)
並致電ListView
,並通過調用addFooterView(mFooterView)
來顯示您的消息來啓用頁眉/頁腳視圖。
請注意,您必須在設置適配器之前添加視圖。
例子:
LayoutInflater inflater = getLayoutInflater();
mFooterView = inflater.inflate(R.layout.footer, null, false);
mListView.addFooterView(mFooterView);
mListView.setAdapter(mAdapter);
在此之後,您隨時來電addFooterView()
,以顯示你的消息,並呼籲removeFooterView()
隱藏你的消息。
當您使用AsyncTask
,您可以使用ProgressDialog
有消息onPreExecute
方法「搜索」並關閉它,當你完成(在onPostExecute
)。
這樣,您的ListView也將被禁用。
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = ProgressDialog.show(mContext, message, "Please wait...");
mProgressDialog.setCancelable(false);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(mProgressDialog != null && mProgressDialog.isShowing())
mProgressDialog.dismiss();
// set data for listview
}
我不知道任何直接的解決方案(其中必須有),但我的方式做,這將是:
onPreExecute:
setEnabled(false)
使它不能點擊。setVisibility(View.VISIBLE)
,以使其在您的ListView之上可見。爲此,您需要將您的ListView和自定義佈局合併爲FrameLayout
。onPostExecute:
通過這樣做後,就可以顯示一個透明/半透明區域覆蓋整個ListView在其頂部或中間有消息。
我用在我的項目之一這種方法,它看起來非常不錯,爲什麼不使用通知表明執行查詢時:)
?
因爲它可以確保即使您到其他應用程序仍繼續搜索。
你問的問題意味着您的應用程序等待很長的時間來搜索一個詞,別的什麼也不做,這是不可取的應用爲人類設計
謝謝,但setClickable(布爾)只是用戶我需要:) – BamsBamx 2012-08-14 11:50:56
沒有probs。無論是這種方式還是那種方式,都必須繼續編碼:) – waqaslam 2012-08-14 11:58:20