本文共 1605 字,大约阅读时间需要 5 分钟。
今天项目终于到了需要使用AutoCompleteTextView的情况,但是怎么也不能调出匹配的内容,然后发现它有报一个空指针的异常,所以考虑可能将空的字符串添加到了列表中了,报错如下:
09-20 17:11:08.586 28516-996/com.wbm.app.activity W/Filter: An exception occured during performFiltering()!
java.lang.NullPointerException at android.widget.ArrayAdapter$ArrayFilter.performFiltering(ArrayAdapter.java:480) at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.os.HandlerThread.run(HandlerThread.java:61)解决办法:
添加的时候使用StringUtils去判断只有非空的才能添加就行了:
/**更新自动匹配的数据列表*/ private void updateAutoCompleteList() { autoCompleteNameList.clear(); autoCompleteAddressList.clear(); Listall = DataSupport.findAll(DispatchOrderShortInfor.class); for (int i = 0; i < all.size(); i++) { DispatchOrderShortInfor shortInfor = all.get(i); String address = shortInfor.getAddress(); String ownerName = shortInfor.getOwnerName(); //只有在列表中没有的时候才添加,不然会出现很多的相同的地址 if(!StringUtils.isEmpty(ownerName)&&!autoCompleteAddressList.contains(address)) autoCompleteAddressList.add(address); if(!StringUtils.isEmpty(ownerName)&&!autoCompleteNameList.contains(ownerName)) autoCompleteNameList.add(ownerName); } mHandler.post(new Runnable() { @Override public void run() { mAdapterForAutoCompleteAddress.notifyDataSetChanged(); mAdapterForAutoCompleteName.notifyDataSetChanged(); } }); }