更改选项卡时筛选ListView

时间:2012-02-26 19:55:08

标签: android listview filter tabs

我需要使用三个选项卡在一个活动中过滤ListView。例如,我有一个选项卡,其中显示有关所有设备的信息(自定义对象),但当我更改为其他选项卡时,它应显示“type1”设备,当我更改为最后一个选项卡时,它显示设备“TYPE2”。

我已经有了一个自定义适配器,我想知道我是否可以使用Filterable接口(...实现Filterable ...)并覆盖getFilter()方法(比如基于editText的过滤)或者我应该使用另一种方法?

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我使用onTabChanged()方法解决了这个问题,如此(在onCreate()中):

mTabHost.setOnTabChangedListener(new OnTabChangeListener() {

        public void onTabChanged(String tabId) {
            Log.d(debugTag, "onTabChanged: tab number=" + mTabHost.getCurrentTab());

            switch (mTabHost.getCurrentTab()) {
            case 0:
                myDevAdapter.getFilter().filter("all");
                break;
            case 1:
                myDevAdapter.getFilter().filter("type1");
                break;
            case 2:
                myDevAdapter.getFilter().filter("type2");
                break;

            default:
                Log.d(debugTag,"error in onTabChanged");
                break;
            }
        }
    });

答案 1 :(得分:0)

我还没有使用onfocuschange或filterable但是从你所说的话听起来你需要一起使用它们。

另一种可能的方法是设置onclicklistener来过滤。想象一下有点麻烦。如果我有正确的想法。您将显示约100个项目。然后单击一个选项卡,将显示~50。然后单击其他选项卡,另一个~50显示。点击最后一个标签,然后再显示一次?