2012-04-20 22 views
4

你好Android開發,安卓:在搜索查看輸入文本

我有一個問題與Android SearchView小部件時,爲防止文本框彈出。我想要做的是將一個「活的」文本過濾器附加到我的ListView(文本輸入自動刷新過濾器結果)。它的工作原理其實很好,它是沒有巨大的努力得到它的工作對我的ListActivity這些行:

private SearchView listFilter; 

this.listFilter = (SearchView) findViewById(R.id.listFilter); 
this.listFilter.setOnQueryTextListener(this); 
this.listFilter.setSubmitButtonEnabled(false); 

this.getListView().setOnItemClickListener(this); 
this.getListView().setTextFilterEnabled(true); 

// from OnQueryTextListener 
public boolean onQueryTextChange(String newText) { 
    if (newText.isEmpty()) { 
     this.getListView().clearTextFilter(); 
    } else { 
     this.getListView().setFilterText(newText); 
    } 
    return true; 
} 

而且這裏的XML插件聲明

<SearchView 
    android:id="@+id/listFilter" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:iconifiedByDefault="false" 
    android:queryHint="enter text to filter" /> 

現在我的問題是什麼,我每一次在SearchView中輸入文本,一個奇怪的文本字段彈出即時顯示相同的文本,因爲我可以在SearchView本身看到我的輸入,並且它在我的列表條目中部分阻止了視線,這只是一種無用的方式煩人。

有什麼辦法可以防止在輸入到SearchView時彈出文本字段?我無法在xml定義的小部件選項和java類引用上找到任何屬性。

我知道還有另一種方式來使用EditText和TextWatcher提供過濾器功能,但是我必須自己處理過濾,並且無法從處理它的SearchView中獲益。

任何建議表示讚賞。 最好的問候

菲利克斯

回答

5

我發現瞭如何擺脫難看的彈出窗口。訣竅是直接使用過濾器。下面的代碼假定您已在自定義適配器中實現了可過濾。

public boolean onQueryTextChange(String newText) { 
    if (TextUtils.isEmpty(newText)) { 
     m_listView.clearTextFilter(); 
    } else { 
     ContactsAdapter ca = (ContactsAdapter)lv.getAdapter(); 
     ca.getFilter().filter(newText); 
     //following line was causing the ugly popup window. 
     //m_listView.setFilterText(newText); 
    } 
    return true; 
} 
+0

謝謝您的回覆。我已經回到了TextWatcher的解決方法,但是一旦我找到了一些時間,我會測試一下,如果它有效,就給你一個綠色的勾號。 :) – Felix 2012-06-28 15:20:28

+0

你可以發佈您的解決方案使用TextWatcher? – 2012-07-26 23:33:53

+0

感謝它的工作像魅力(Y) – 2016-08-26 10:40:03