ListView和适配器过滤器未更新

时间:2014-03-30 14:02:18

标签: java android listview

我正在设置一个带有相应ListView的适配器。当我过滤适配器和ListView时,我输出他们的计数,它仍然是相同的。但是,在应用程序中,似乎已经过滤了listView,因为它只显示了与过滤器输入匹配的项目(在本例中为" Berlin")。

    String string_list[] = {"Paris", "London", "Milano", "Madrid", "Berlin", "Moscow", "Washington" };

    // Set up ListView and Adapter
    myAdapt = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,string_list);
    myListView.setAdapter(myAdapt);
    myListView.setItemsCanFocus(false);
    myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View itemView, int position,
                long arg3) {
            // One of my methods
            manageFavorites(arg0, itemView, position, arg3, myListView);
        }
    });
    // Debug
    myAdapt.getFilter().filter("B");
    tv1.setText("myAdapt.getCount() =" + myAdapt.getCount());

    myListView.setTextFilterEnabled(true);
    myListView.setFilterText("B");
    tv2.setText("myListView.getCount() =" + myListView.getCount());

有没有办法在调用适配器或listView上的过滤器时,变量会根据文件管理器而变化?在这种情况下,我使用字符myAdapt过滤myListViewB,因此我希望myAdaptmyListView带有与之匹配的唯一项目字符,Berlin

请注意,我的课程扩展了Activity。请指出我是否应该使用我在SOF周围看到的ListActivityCustomAdapter

1 个答案:

答案 0 :(得分:1)

您必须在过滤器上添加一个过滤器,该过滤器将在过滤完成时触发。

myAdapt.getFilter().filter("B", new Filter.FilterListener() {
    public void onFilterComplete(int count) {
        tv2.setText("myListView.getCount() =" + count);    
    }
}

有关详细信息,请参阅Android参考中的Filter class