SearchView的簡單使用和模擬搜尋

葵花的微笑發表於2017-09-20

android SearchView其實就是EditView新增了一些方法,可以達到搜尋的功能,首先先看它的佈局檔案,這是v7包下的SearchView

<android.support.v7.widget.SearchView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/find_serach"
    app:queryHint="請輸入搜尋的文字"

    ></android.support.v7.widget.SearchView>
其中queryHint就是預設文字,這裡還可以設定自定義的文字顏色和背景,剩下主要是程式碼部分,我先為大家介紹幾個方法,我親自測試過的:
1.
setIconifiedByDefault()是設定搜尋框是否預設展開;
2.
setSubmitButtonEnabled()是否設定一個提交按鈕;
其他功能看下錶:

SearchView屬性

屬性名稱相關方法描述
android:iconifiedByDefaultsetIconifiedByDefault(boolean)設定搜尋圖示是否顯示在搜尋框內
   
android:imeOptionssetImeOptions(int)設定輸入法搜尋選項欄位,預設是搜尋,可以是:下一頁、傳送、完成等
   
android:inputTypesetInputType(int)設定輸入型別
   
android:maxWidthsetMaxWidth(int)設定最大寬度
   
android:queryHintsetQueryHint(CharSequence)設定查詢提示字串

監聽方法:
setOnQueryTextListener();
這是監聽我們搜尋時,和搜尋後的方法,它內含兩個方法
onQueryTextSubmit(String query)這是提交時的方法,可以根據你提交的內容進行相應的搜尋操作,
onQueryTextChange(String newText)這是在搜尋框內輸入內容時,可以像百度,淘寶,搜尋時模糊推薦選項,供你選擇;
其他也沒什麼了,接下來看完整程式碼:

public class FindActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {

    private SearchView searchView;
    private List<String> data=new ArrayList<>();

    private ListView lv;
    private List<String> arr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getSupportActionBar().hide();
        super.onCreate(savedInstanceState);

        arr = new ArrayList<>();


        searchView = (SearchView) findViewById(R.id.find_serach);
        searchView.setIconifiedByDefault(false);
        searchView.setSubmitButtonEnabled(true);
        searchView.setOnQueryTextListener(this);
        lv = (ListView) findViewById(R.id.lv_query_name);

        for (int i = 0; i < 10; i++) {
            arr.add("data"+i);

        }
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, arr));
//給listVIew設定可過濾的操作
        lv.setTextFilterEnabled(true);
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
//跳轉到手機自帶的瀏覽器百度或者谷歌
        Intent intent = new Intent();

        intent.setAction(Intent.ACTION_WEB_SEARCH);

        intent.putExtra(SearchManager.QUERY, query);

        startActivity(intent);
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
//判斷是否輸入內容,並進入過濾操作
        if(!TextUtils.isEmpty(newText))
        {
            lv.setFilterText(newText);
        }
        else
        {
            lv.clearTextFilter();
        }
        return false;
    }
}



分享到此結束,請多多指教,希望對你們有些幫助。
















相關文章