Android 为动态填充的适配器实现可筛选接口

Android 为动态填充的适配器实现可筛选接口,android,adapter,Android,Adapter,如何为动态填充的适配器保留原始数据,需要在用户在listview上搜索请求之前快照数据> 我正在myadapter中实现Filterable接口,无法复制构造函数上的原始数据,因为我的列表已为空,将在以后填充 private Filter filteredList = new Filter() { @Override protected FilterResults performFiltering(CharSequence charSequence) { List

如何为动态填充的适配器保留原始数据,需要在用户在listview上搜索请求之前快照数据> 我正在myadapter中实现Filterable接口,无法复制构造函数上的原始数据,因为我的列表已为空,将在以后填充

private Filter filteredList = new Filter() {
    @Override
    protected FilterResults performFiltering(CharSequence charSequence) {
        List<ITEMMODEL> filtered = new ArrayList<>();
        if (charSequence == null || charSequence.length() == 0) {
            filtered.addAll(itemsFull);
        } else {
            for (ITEMMODEL item : itemsFull) {
                Log.d(TAG,item.getName());
                if (item.getName().toLowerCase().contains(charSequence.toString().toLowerCase().trim())) {
                    filtered.add(item);
                }
            }
        }
        FilterResults results = new FilterResults();
        results.values = filtered;
        return results;
    }

    @Override
    protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
        items.clear();
        items.addAll((List)filterResults.values);
        notifyDataSetChanged();
    }
};



public void onResume() {
    super.onResume();
    Cursor cursor = getActivity().getContentResolver().query(ItemsProvider.CONTENT_URI,null,null,null,null);
    itemListAdapter.clear();
    while ((cursor.moveToNext())) {
        itemListAdapter.addItem(itemFromCursor(cursor));
    }
private filteredList=new Filter(){
@凌驾
受保护过滤器结果执行过滤(CharSequence CharSequence){
List filtered=new ArrayList();
if(charSequence==null | | charSequence.length()==0){
过滤后的.addAll(itemsFull);
}否则{
对于(ITEMMODEL item:itemsFull){
Log.d(标记,item.getName());
if(item.getName().toLowerCase().contains(charSequence.toString().toLowerCase().trim())包含{
过滤。添加(项目);
}
}
}
FilterResults results=新的FilterResults();
结果.值=过滤;
返回结果;
}
@凌驾
受保护的无效发布结果(CharSequence CharSequence、FilterResults FilterResults){
items.clear();
items.addAll((列表)filterResults.values);
notifyDataSetChanged();
}
};
恢复时公开作废(){
super.onResume();
Cursor Cursor=getActivity().getContentResolver().query(ItemsProvider.CONTENT\u URI,null,null,null);
itemListAdapter.clear();
而((cursor.moveToNext())){
addItem(itemFromCursor(cursor));
}

}

在适配器内部尝试,修改清除()方法如下:

        @Override
        public void clear() {
            super.clear();
            itemsFull.clear();
        }

addItem()方法将项添加到两个列表(项和项完整)。希望有帮助

在适配器内部尝试,修改如下方法:

        @Override
        public void clear() {
            super.clear();
            itemsFull.clear();
        }

addItem()方法将项添加到两个列表(项和项完整)。希望有帮助

请显示将数据/数据列表添加到适配器中的代码。@I_A_Mok I更新了“Fragment::onResume”上方的代码。请显示将数据/数据列表添加到适配器中的代码。@I_A_Mok I更新了“Fragment::onResume”上方的代码