您的位置:首页 > 其它

SearchView的最简单的使用方式

2014-07-21 23:08 155 查看


SearchView顾名思义就是一个搜索视图,和之前讲解的自动匹配的输入框类似。只不过他有自己特有的监听器,并且可以实时得到用户输入的结果。对于SearchView这个控件,我强烈建议将其放在ActionBar上面,突出搜索这个功能。但这里可能会涉及到Actionbar的知识,所以这里先给大家展示一下这个控件是干什么用的。

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<requestFocus />

<SearchView
android:id="@+id/searchView_id"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<ListView
android:id="@+id/listView_id"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>

</LinearLayout>


MainActivity.java

package com.kale.searchview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import android.text.TextUtils;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnQueryTextListener{

private SearchView sView;
private ListView lView;
//自动完成的列表
private final String[] mStrings = {"aaaa","bbbb","cccc"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

viewInit();
lView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,mStrings));
lView.setTextFilterEnabled(true);

//设置该searchView默认是否自动缩小为图标
sView.setIconified(false);
//为该设searchView组件设置事件监听器
sView.setOnQueryTextListener(this);
//设置该组件显示搜索按钮
sView.setSubmitButtonEnabled(true);
//设置该组件默认显示的提示文本
sView.setQueryHint("查找");
}

// 用户输入字符时激发的方法
@Override
public boolean onQueryTextChange(String newText) {
// TODO 自动生成的方法存根
if(TextUtils.isEmpty(newText)) {
//清除listview的过滤
lView.clearTextFilter();
}
else {
//用用户输入的内容对listview的列表项进行过滤
lView.setFilterText(newText);
}
return true;
}

//用户单击搜索按钮时激发的方法
@Override
public boolean onQueryTextSubmit(String qurery) {
//这里仅仅是模拟,实际中应该在该方法中进行查询,然后将结果得到
Toast.makeText(MainActivity.this, "你选择的是:"+qurery, 0).show();
return false;
}

private void viewInit() {
sView = (SearchView)findViewById(R.id.searchView_id);
lView = (ListView)findViewById(R.id.listView_id);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: