Android 适配器的内容已更改,但ListView未收到通知。从AutoCompleteTextView
当我选择时,我从AutoCompleteTextView中发现了这个问题 如何解决此错误 java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保适配器的内容不是从后台线程修改的,而是仅从UI线程修改的。确保适配器在其内容更改时调用notifyDataSetChanged() 代码:Android 适配器的内容已更改,但ListView未收到通知。从AutoCompleteTextView,android,android-listview,android-adapter,Android,Android Listview,Android Adapter,当我选择时,我从AutoCompleteTextView中发现了这个问题 如何解决此错误 java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。确保适配器的内容不是从后台线程修改的,而是仅从UI线程修改的。确保适配器在其内容更改时调用notifyDataSetChanged() 代码: 公共类AutoSuggestAdapter扩展ArrayAdapter实现可过滤{ 列出托运人名单; 公共自动SuggestAdapter(上下文,in
公共类AutoSuggestAdapter扩展ArrayAdapter实现可过滤{
列出托运人名单;
公共自动SuggestAdapter(上下文,int textViewResourceId){
super(上下文,textViewResourceId);
托运人=新ArrayList();
}
公共void setData(列表stringList){
}
@凌驾
public int getCount(){
退货托运人。尺寸();
}
@凌驾
公共字符串getItem(int索引){
返回托运人。获取(索引);
}
@凌驾
公共过滤器getFilter(){
过滤器myFilter=新过滤器(){
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
FilterResults FilterResults=新的FilterResults();
if(约束!=null){
Logger.d(“启动加载地址”);
新建QueryAddressRepository(getContext()).GetAddressList(constraint.toString(),address_list->{
托运人=地址和清单;
d.完成;
});
//现在将值和计数分配给FilterResults对象
filterResults.values=托运人;
filterResults.count=shippers.size();
}
返回过滤器结果;
}
@凌驾
受保护的void publishResults(CharSequence Contrint、FilterResults结果){
if(results!=null&&results.count>0){
notifyDataSetChanged();
}否则{
notifyDataSetionValidated();
}
}
};
返回myFilter;
}
}是否可以发布活动代码?发生此问题的原因可能是您正在从后台线程调用notifyDataSetChanged。是否可以发布活动代码?发生此问题的原因可能是您正在从后台线程调用notifyDataSetChanged。
public class AutoSuggestAdapter extends ArrayAdapter<String> implements Filterable {
List<String> shippers;
public AutoSuggestAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
shippers = new ArrayList<String>();
}
public void setData(List<String> stringList) {
}
@Override
public int getCount() {
return shippers.size();
}
@Override
public String getItem(int index) {
return shippers.get(index);
}
@Override
public Filter getFilter() {
Filter myFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
Logger.d("Start load address");
new QueryAddressRepository(getContext()).getAdressList(constraint.toString(), address_list -> {
shippers = address_list;
Logger.d("Done");
});
// Now assign the values and count to the FilterResults object
filterResults.values = shippers;
filterResults.count = shippers.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence contraint, FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
return myFilter;
}