2012-08-14 72 views
0

我使用的是的AsyncTask類搜索詞,所以我希望出現的單詞列表 「搜索」在執行proccess如何使列表不可點擊?

好吧,我想要做的是有一個非可點擊列表,直到搜索完成,爲了,如果搜索單詞被點擊,什麼也沒有發生......

這是正確的方法嗎? 非常感謝!

回答

1

當你加載,搜索和獲取數據可以顯示標題視圖或/和你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()隱藏你的消息。

0

當您使用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  
} 
1

我不知道任何直接的解決方案(其中必須有),但我的方式做,這將是:

onPreExecute

  1. 讓您的ListViewsetEnabled(false)使它不能點擊。
  2. 將您的自定義佈局(包含搜索消息)的可見性設置爲setVisibility(View.VISIBLE),以使其在您的ListView之上可見。爲此,您需要將您的ListView和自定義佈局合併爲FrameLayout

onPostExecute

  • 簡單地恢復過程中,你已經改變的ListView內容

通過這樣做後,就可以顯示一個透明/半透明區域覆蓋整個ListView在其頂部或中間有消息。

我用在我的項目之一這種方法,它看起來非常不錯,爲什麼不使用通知表明執行查詢時:)

+0

謝謝,但setClickable(布爾)只是用戶我需要:) – BamsBamx 2012-08-14 11:50:56

+0

沒有probs。無論是這種方式還是那種方式,都必須繼續編碼:) – waqaslam 2012-08-14 11:58:20

0

因爲它可以確保即使您到其他應用程序仍繼續搜索。

你問的問題意味着您的應用程序等待很長的時間來搜索一個詞,別的什麼也不做,這是不可取的應用爲人類設計