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 就解决了(虽然并不知道为神马)

转载于:https://www.cnblogs.com/xym4869/p/8475977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值