2012-05-30 71 views
0

的我這一段代碼:setVisibility列表<item>

public void cap_search(){ 
     EditText search = (EditText) findViewById(R.id.search); 
     String str_search = null; 
     adapter = new ItemListAdapter(this, data); 
     setListAdapter(adapter); 

     str_search = search.getText().toString(); 
     for (int i = data.size()-1; i >= 0; i--){ 
      if (!data.get(i).getCaption().contains(str_search)){ 
       data.remove(i); 
      } 
     } 
    } 

我會解釋這個代碼,它在我的代碼是什麼:

人們能看到蓋的清單,就可以檢查他們擁有的所有大寫字母。 但是因爲我有很多上限,我建立了一個搜索功能。所以當他們鍵入:「A」時,那麼列表應該只顯示包含「A」的上限。 直到這一切正常,現在是問題。 他們鍵入:「A」後,我刪除所有不包含它的項目。但是當用戶刪除「A」並輸入「B」時,它應該檢查整個列表(也是刪除的不是以「A」開頭的列表),但它不會,因爲我刪除了它們。

那麼是否有可能使項目不可見而不是刪除它們? 或者也許另一種方法來解決這個問題?

我希望很清楚,如果不是請說出來,那麼我會試着解釋它的不同。

感謝不已,Bigflow

編輯1:

試了很多的答案,但我不能讓它正常工作。 有人有更多的想法?
TextWatcher看起來很酷,但對我來說太困難了,這是我嘗試實現它的第二個項目,但是這次我無法實現它。
我從來沒有使用過SQL。

那麼別人有其他答案嗎?或者,也許有人用textwatcher很好,你可以讓我/幫助我嗎?大多數時候,互聯網上的textwatchers例子對我來說太複雜了。我真的很感激。

編輯2:

我還在盤算這個選項/功能了,但如何與adapter.getfilter();的使用?

+0

如果您知道任何SQL,您可以使用[FilterQueryProvider](http://developer.android.com/reference/android/widget/FilterQueryProvider.html)自動執行所有操作。 – Sam

+0

@Sam對不起,我沒有 – Bigflow

回答

1

嘗試使用兩個列表,其中一個包含所有結果,另一個包含搜索結果。總是顯示第二個列表,如果要顯示整個列表,只需將第二個列表指向第一個列表。 喜歡的東西:

private List<Item> displayData = new ArrayList<Item>(); 

public void cap_search(){ 
     EditText search = (EditText) findViewById(R.id.search); 
     String str_search = null; 

     str_search = search.getText().toString(); 
     displayData.clear(); 
     if (str_search == null || str_search.equals("")) { 
      displayData.addAll(data); 
     } else { 
      for (int i = data.size()-1; i >= 0; i--){ 
       if (data.get(i).getCaption().contains(str_search)){ 
        displayData.add(data.get(i)); 
       } 
      } 
     } 
     adapter = new ItemListAdapter(this, displayData); 
     setListAdapter(adapter); 
} 
+0

這個作品不錯,只有1個問題。當我檢查(例如)第一個帽子時,我搜索另一個帽子,它重新加載列表(因此它不檢查帽子1,但它必須保持第一帽子檢查),我會去弄清楚,但如果你知道什麼,那麼你可以分享它:) – Bigflow

+0

它有另一個問題,它會在搜索後添加整個列表兩次。不能讓它正常工作 – Bigflow

+0

這個更新應該修復第二個問題 – tibtof

0

我解決了這個具有「更新按鈕」如果這是你的解決方案。用空的搜索模式,我只是再次加載整個列表。

0

嘗試在每次使用列表時嘗試建立所需的條件。