2014-03-30 67 views
0

我正在設置一個適配器與相應的ListView。當我過濾適配器和ListView時,我輸出他們的計數,它仍然是相同的。但是,在應用程序中,似乎listView已被過濾,因爲它只顯示與過濾器輸入相匹配的項目(在本例中爲「柏林」)。ListView和適配器過濾器不更新

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上調用一個過濾器時,該變量的變化,根據文件管理器的方法嗎?在這種情況下,我將myAdaptmyListView與字符B進行了過濾,因此我希望myAdaptmyListView僅攜帶與該字符匹配的唯一項,即Berlin

請注意,我的課程延伸了Activity。請指出我是否應該使用ListActivityCustomAdapter,正如我在SOF周圍看到的那樣。

回答

1

您必須在篩選器上添加一個偵聽器,並在篩選完成時觸發。

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

有關詳細信息,請參閱Android參考中的Filter class

+0

這樣做的竅門,謝謝! – solalito