我正在设置一个带有相应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
过滤myListView
和B
,因此我希望myAdapt
和myListView
带有与之匹配的唯一项目字符,Berlin
。
请注意,我的课程扩展了Activity
。请指出我是否应该使用我在SOF周围看到的ListActivity
或CustomAdapter
。
答案 0 :(得分:1)
您必须在过滤器上添加一个过滤器,该过滤器将在过滤完成时触发。
myAdapt.getFilter().filter("B", new Filter.FilterListener() {
public void onFilterComplete(int count) {
tv2.setText("myListView.getCount() =" + count);
}
}
有关详细信息,请参阅Android参考中的Filter class。