gpt4 book ai didi

android - 如何防止ListView在过滤前显示数据

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:15 25 4
gpt4 key购买 nike

我使用以下代码来过滤我的 ArrayAdapter 并在过滤完成后调用 setAdapter。由于某种原因,在应用过滤器之前,未过滤的数据会在屏幕上闪烁。有什么想法吗?

    mList = getData();
Collections.sort(mList);

mAdapter = new CustomItem(getActivity(), R.layout.list_item, mList);

String filter = mSpinner1.getSelectedItem().toString();
mAdapter.getFilter().filter(filter);
mListView.setAdapter(mAdapter);

这是我的自定义过滤器中的代码:

@Override
public Filter getFilter()
{
return new Filter()
{
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results)
{
mSubItems = (ArrayList<CustomItem>)results.values;
if (results.count > 0)
{
notifyDataSetChanged();
}
else
{
notifyDataSetInvalidated();
}
}

@Override
protected FilterResults performFiltering(CharSequence constraint)
{
setFilter(constraint);

List<CustomItem> filteredResults = getFilteredResults();
FilterResults results = new FilterResults();
results.values = filteredResults;
results.count = filteredResults.size();

return results;
}
};
}

最佳答案

您可能需要做一些花哨的步法才能使它看起来像您想要的样子。当用户第一次选择过滤选项时,您可以删除 listView 内容。

然后在过滤器上使用 FilterListener 以了解过滤何时完成并再次显示 listView 内容。

mAdapter.getFilter().filter(chars, new Filter.FilterListener() {
public void onFilterComplete(int count) {
// show the listView content again;
}
});

关于android - 如何防止ListView在过滤前显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com