栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Android阵列适配器中使用notifyDataSetChanged时出错

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Android阵列适配器中使用notifyDataSetChanged时出错

Filter
performFiltering()
方法在后台线程,并从该方法运行你改变了
resultList
上您的适配器的基础。如果您更改了该数据列表,并且在那段时间
ListView
访问了适配器,它将看到某些内容在其不知情的情况下发生了更改(并且不会感到高兴)。您应该避免使用
resultList
in
performFiltering
方法,而只需创建一个新的临时列表:

// in the performFiltering method which runs on a background thread:@Overrideprotected FilterResults performFiltering(CharSequence constraint) {     FilterResults filterResults = new FilterResults();     ArrayList<String> queryResults;     if (constraint != null && constraint.length() > 0) {         queryResults = autocomplete(constraint);     } else {         queryResults = new ArrayList<String>(); // empty list/no suggestions showing if there's no valid constraint     }     filterResults.values = queryResults;     filterResults.count = queryResults.size();     return filterResults; // ## Heading ##}private List<String> autocomplete(String input) {   // don't use the here the resultList List on which the adapter is based!   // some custom pre to get items from http connection     ArrayList<String> queryResults = new ArrayList<String>(); // new list     queryResults.add("Some String");     return queryResults;}@Overrideprotected void publishResults(CharSequence constraint, FilterResults results) {     // update the data with the new set of suggestions     resultList = (ArrayList<String>)results.values;     if (results.count > 0) {         notifyDataSetChanged();     } else {         notifyDataSetInvalidated();     }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410383.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号