我遇到getCount()
提供的ListView
函数问题。我正在尝试使用ListView
提供的onQueryTextChange()
方法过滤SearchView
时显示的行数。不幸的是,我获得的数字总是偏离一次迭代。例如,如果我从ListView
中的4个项开始并对其进行过滤,以便ListView
中只有1个项getCount()
函数返回4,即使我想要1。如果我在此之后再次更改过滤器,那么我得到1.我如何得到它以便当我在ListView
方法中过滤onQueryTextChange()
时,相应的getCount()
数字将是给定?
@Override
public boolean onQueryTextChange(String newText) {
sizeOfList = listView.getAdapter().getCount(); //changes based on the number of items in the listview....so changes when filtered
Toast.makeText(getActivity(), String.valueOf(sizeOfList), Toast.LENGTH_SHORT).show();
if (TextUtils.isEmpty(newText)){
listView.clearTextFilter();
for (int i = 0; i < actualposList.size(); i++){
listView.setItemChecked(actualposList.get(i), true);
Log.d("qqqq", String.valueOf(actualposList.get(i)));
}
} else {
listView.setFilterText(newText);
if (!actualposList.isEmpty()){
for (int i = 0; i < list.size(); i++){
//listView.setItemChecked(i, false);
}
}
}
return true;
}
答案 0 :(得分:0)
你能说明clearFilterText和setFilterText是做什么的吗?如果他们以任何方式修改列表,您需要调用adapter.notifyDataSetChanged以便更改反映在适配器中
答案 1 :(得分:0)
试试这个
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)) {
listView.clearTextFilter();
for (int i = 0; i < actualposList.size(); i++) {
listView.setItemChecked(actualposList.get(i), true);
Log.d("qqqq", String.valueOf(actualposList.get(i)));
}
} else {
listView.setFilterText(newText);
if (!actualposList.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
//listView.setItemChecked(i, false);
}
}
}
sizeOfList = listView.getAdapter().getCount(); //changes based on the number of items in the listview....so changes when filtered
Toast.makeText(getActivity(), String.valueOf(sizeOfList), Toast.LENGTH_SHORT).show();
return true;
}