ListView getCount()方法关闭一次迭代

时间:2017-12-21 06:23:47

标签: java android listview

我遇到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;
}

2 个答案:

答案 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;
}