Android 使用EditText在导航抽屉中筛选ListView

Android 使用EditText在导航抽屉中筛选ListView,android,listview,filter,navigation-drawer,Android,Listview,Filter,Navigation Drawer,图中显示了导航抽屉中的ListView,我添加了EditText来过滤列表,但我无法实现这一点。请帮我怎么做这个!!!我的代码如下!!谢谢 public类MainActivity扩展了FragmentActivity{ 私人抽屉布局mDrawerLayout; ImageView主页; 片段=空; TextView appname; 列表视图列表视图; //自定义适配器自定义适配器; MyArrayAdapter myAdapter; 列表数据; 编辑文本输入搜索; 线性布局线性布局; 复选框

图中显示了导航抽屉中的
ListView
,我添加了
EditText
来过滤列表,但我无法实现这一点。请帮我怎么做这个!!!我的代码如下!!谢谢

public类MainActivity扩展了FragmentActivity{
私人抽屉布局mDrawerLayout;
ImageView主页;
片段=空;
TextView appname;
列表视图列表视图;
//自定义适配器自定义适配器;
MyArrayAdapter myAdapter;
列表数据;
编辑文本输入搜索;
线性布局线性布局;
复选框;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
home=(ImageView)findViewById(R.id.home);
setOnClickListener(homeconclickllistener);
appname=(TextView)findViewById(R.id.appname);
fragment=新的MapFragment();
setUpDrawer();
inputSearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
//TODO自动生成的方法存根
myAdapter.getFilter().filter;
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
//TODO自动生成的方法存根
}
});
}
/**
* 
*获取名称和图标引用以构建抽屉菜单。。。
*/
私有void setUpDrawer(){
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent));
mDrawerLayout.setDrawerListener(mDrawerListener);
listView=(listView)findViewById(R.id.lvExp);
setTextFilterEnabled(true);
linearLayout=(linearLayout)findViewById(R.id.左抽屉布局);
inputSearch=(EditText)findViewById(R.id.inputSearch);
复选框=(复选框)findViewById(R.id.vechileCheck);
prepareListData();
myAdapter=新的MyArrayAdapter(此为listData);
//设置列表适配器
setAdapter(myAdapter);
//fragment=新的MapFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame,fragment).commit();
mDrawerLayout.封闭抽屉(线性布局);
}
View.OnClickListener homeonclicklListener=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mDrawerLayout.isDrawerOpen(linearLayout)){
mDrawerLayout.封闭抽屉(线性布局);
}否则{
mDrawerLayout.打开抽屉(线性布局);
}
}
};
私有OnItemClickListener mDrawerItemClickedListener=新建OnItemClickListener(){
@凌驾
公共单击(适配器视图arg0,视图arg1,内部位置,
长arg3){
开关(位置){
案例0:
fragment=新的MapFragment();
打破
案例1:
fragment=新的MapFragment();
打破
案例2:
fragment=新的MapFragment();
打破
违约:
返回;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame,fragment).commit();
mDrawerLayout.封闭抽屉(线性布局);
}
};
//捕获与抽屉相关的事件,以便根据该事件排列视图
//必要时采取行动。。。
私有抽屉列表mDrawerListener=新抽屉列表(){
@凌驾
公共无效onDrawerStateChanged(int状态){
}
@凌驾
公用空心滑块(视图、浮动滑块){
}
@凌驾
已打开的公共空间(视图){
}
@凌驾
公共无效onDrawerClosed(视图){
}
};
私有void prepareListData(){
listData=newarraylist();
//添加子数据
listData.add(“Vechile-1”);
listData.add(“Vechile-2”);
listData.add(“Vechile-3”);
listData.add(“Vechile-4”);
listData.add(“Vechile-5”);
listData.add(“Vechile-6”);
listData.add(“Vechile-7”);
listData.add(“Vechile-8”);
listData.add(“Vechile-9”);
添加(“wakie”);
}
}

公共类MyArrayAdapter扩展了ArrayAdapter{

private Context _context;
private List<String> _listData;

public MyArrayAdapter(Context context, List<String> listData) {
    super(context, -1, listData);

    this._context = context;
    this._listData = listData;

}

@Override
public int getCount() {
    return this._listData.size();
}

@Override
public String getItem(int position) {
    return this._listData.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View view, ViewGroup parent) {
    String headerTitle = (String) getItem(position);
    if (view == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = infalInflater.inflate(R.layout.list_group, null);
    }

    TextView lblListHeader = (TextView) view
            .findViewById(R.id.lblListHeader);
    lblListHeader.setTypeface(null, Typeface.BOLD);
    lblListHeader.setText(headerTitle);
    return view;
}
private Context\u Context;
私有列表listData;
公共MyArrayAdapter(上下文,列表数据){
super(context,-1,listData);
这._context=context;
这是。_listData=listData;
}
@凌驾
public int getCount(){
返回此项。_listData.size();
}
@凌驾
公共字符串getItem(int位置){
返回此。\u listData.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
字符串标题=(字符串)getItem(位置);
如果(视图==null){
LayoutInflater infalInflater=(LayoutInflater)this.\u上下文
.getSystemService(上下文布局\充气机\服务);
视图=充气器充气(R.layout.list\u组,空);
}
TextView lblistheader=(TextView)视图
.findviewbyd(R.id.lblistheader);
lblListHeader.setTypeface(null,Typeface.BOLD);
lblListHeader.setText(标题);
返回视图;
}
}
]

以下是您的答案@hungdh0x5e-Yaa它正在工作!!!仅当我按下键盘上的“下一步”按钮时,才会显示过滤后的数据。我想要的是在我更改编辑文本中的数据后立即显示过滤后的数据。以下是对您的回答@hungdh0x5e Yaa它的工作原理!!!仅当我按下键盘上的“下一步”按钮时,才会显示过滤后的数据。我想要的是在我更改EditText中的数据时立即显示过滤后的数据。
private Context _context;
private List<String> _listData;

public MyArrayAdapter(Context context, List<String> listData) {
    super(context, -1, listData);

    this._context = context;
    this._listData = listData;

}

@Override
public int getCount() {
    return this._listData.size();
}

@Override
public String getItem(int position) {
    return this._listData.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View view, ViewGroup parent) {
    String headerTitle = (String) getItem(position);
    if (view == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = infalInflater.inflate(R.layout.list_group, null);
    }

    TextView lblListHeader = (TextView) view
            .findViewById(R.id.lblListHeader);
    lblListHeader.setTypeface(null, Typeface.BOLD);
    lblListHeader.setText(headerTitle);
    return view;
}