[已解决]AutoCompleteTextView 不显示匹配的内容,因为将空的内容添加进去了

在项目中使用AutoCompleteTextView时遇到问题,无法显示匹配内容,出现空指针异常。问题源于将空字符串添加到列表中。通过在添加时利用StringUtils进行非空判断,只添加非空项,成功解决了异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天项目终于到了需要使用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();
        List<DispatchOrderShortInfor> all = 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();
            }
        });
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值