使用BaseExpandableListAdapter在ExpandableListView中过滤文本

时间:2012-01-30 09:49:46

标签: android filter android-edittext adapter expandablelistview

我需要你的帮助:) 我有一个EditText,在ExpandableListView下面。我使用了BaseExpandableListAdapter和groups / child。我希望当用户在EditText中写入时,ExpandableListView只显示插入了文本的组(项)。 我认为我必须创建一个过滤器。 这里有一段我​​的源代码。有人可以帮帮我吗?提前谢谢

         @Override
     public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState
               setContentView(R.layout.main);
               et = (EditText) findViewById(R.id.filterText);

               et.setSingleLine();  
               et.addTextChangedListener(new TextWatcher() {

        @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            if (et.getText().toString().equals(""))
                elv.setBackgroundColor(Color.BLACK);
            else
            {
                elv.setBackgroundColor(Color.WHITE);
            }
        }
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count,int after) {
            // TODO Auto-generated method stub          
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

            elv=getExpandableListView();
            mAdapter = new MyExpandableListAdapter(fields_select,description);
            elv.setAdapter(mAdapter);

            class MyExpandableListAdapter extends BaseExpandableListAdapter {
               ......
            }

1 个答案:

答案 0 :(得分:5)

我解决了,我以这种方式实现了Filterable接口:

   class MyExpandableListAdapter extends BaseExpandableListAdapter implements Filterable{

然后我重写了getfilter()方法。最后,我编写了一个扩展Filter类的类。

   public Filter getFilter() {
    Filter filter = new MyFilter();
    return filter;
}

    private class MyFilter extends Filter{