Android 中 SearchView
package com.example.euphemiaxiao.classsearch; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; //import android.support.v7.widget.SearchView; import android.widget.SearchView; import android.text.TextUtils; import android.widget.ArrayAdapter; import android.widget.ListView; public class ClassSearch extends AppCompatActivity implements SearchView.OnQueryTextListener{ private SearchView sv; private ListView lv; private ArrayAdapter<String> adapter; private final String[] mStrings={"2014211501","2014211502","2014211503","2014211504", "2015211501","2015211502","2015211503","2015211504"}; //private ArrayList<String> alist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.class_search); lv=(ListView)findViewById(R.id.lv); adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mStrings); lv.setAdapter(adapter); // lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mStrings)); lv.setTextFilterEnabled(true);//设置lv可以被过滤 sv=(SearchView)findViewById(R.id.sv); sv.setIconifiedByDefault(false);//设置该searchview默认不自动缩小为图标 sv.setOnQueryTextListener(this);//设置事件监听器 sv.setSubmitButtonEnabled(true);//设置显示搜索按钮 sv.setQueryHint("输入班号");//设置默认显示文字 } //单击搜索按钮时激发该方法 @Override public boolean onQueryTextSubmit(String query) { return false; } //用户输入字符时激发该方法 @Override public boolean onQueryTextChange(String newText) { if(TextUtils.isEmpty(newText)) {//清除ListView的过滤 lv.clearTextFilter(); } else {//使用用户输入的内容对ListView的列表项进行过滤 lv.setFilterText(newText); } return false; } }
上面是classsearch代码
关于listview,开始报错在ArrayAdapter<String>,错误是指向空指针。这里报错的主要原因来源于setContentView(R.layout.class_search),因为引向的不对所以理所应当调用一直是空指针。一定要看准你所调用的layout是哪个。之前有两个layout,引用错误导致一直报错,后来本人急性子,直接删除了另外一个,才发现这里的错误,写成另一个layout了。
关于searchview,报错在sv=(SearchView)findViewById(R.id.sv),错误是:
android.widget.SearchView cannot be cast to android.support.v7.widget.SearchView
这个错误的解决是将import android.support.v7.widget.SearchView
改成import android.widget.SearchView就解决了(虽然并不知道为神马)