自定义autoCompleteTextView

private ArrayAdapter<String> mArrayAdapter;//药品模糊查询弹出列表适配器
    private Context mContext;
    private String[] mDrugNameArray;

    public MyDrugAutoCompleteTextView(Context context) {
        super(context);
        mContext=context;
    }

    public MyDrugAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context,attrs);
        mContext=context;
    }

    public MyDrugAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mContext=context;
    }

    private boolean mIsFocused =false;
    private String befStContent;

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        Editable text = this.getText();
        if(focused){
            mIsFocused =true;
            befStContent=text.toString().trim();
//            this.showDropDown();
        }else{
            mIsFocused =false;
        }
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
//        super.onTextChanged(text, start, lengthBefore, lengthAfter);
        String key=text.toString().trim();
        if(mIsFocused){
            if(!befStContent.equals(key)){
                Timber.e("内容变化了,变化内容为:%s,开始查询服务器",text.toString());
                if(!TextUtils.isEmpty(text.toString())){
                    //主页面显示加载中
                    getDrugList(key, new OnGetDrugListFinishedListener() {
                        @Override
                        public void onTokenError(String msg) {
                            //主页面跳转到登录页面
                        }

                        @Override
                        public void onGetSuccess(List<DrugNameBean> bean) {
                            if(mArrayAdapter==null){
                                mDrugNameArray=new String[0];
                                mArrayAdapter= new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, mDrugNameArray);
                            }
                            if(bean==null||bean.size()<=0){
                                mDrugNameArray=new String[]{UIUtil.getString(mContext, R.string.drug_unfound)};
                            }else{
                                mDrugNameArray=new String[bean.size()];
                                for(int i=0;i<bean.size();i++){
                                    mDrugNameArray[i]=bean.get(i).getName();
                                }
                                setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                    @Override
                                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                        //item被选择,通知编辑页面的item数据被改变

                                        //消失下拉列表

                                    }
                                });
                            }
                            Timber.e("自动填充控件添加Adapter");
                            setAdapter(mArrayAdapter);
                        }

                        @Override
                        public void onServiceException(String msg) {
                            //主页面显示服务器加载失败
                        }

                        @Override
                        public void onCompleted() {

                        }
                    });
                }
            }
        }

    }





    /**
     * 药品模糊查询
     * @param keywords
     * @param listener
     * @return
     */
    public Disposable getDrugList(String keywords, final OnGetDrugListFinishedListener listener) {
        BaseHttpObserver baseHttpObserver=new BaseHttpObserver<List<DrugNameBean>>() {

            @Override
            public void onSuccess(List<DrugNameBean> result) {
                listener.onGetSuccess(result);
            }

            @Override
            public void onFailure(int code, String msg) {
                if(code==ErrorCodeForTokenPastDue){
                    listener.onTokenError(msg);
                }
            }

            @Override
            public void onServiceException(int code, String msg) {
                listener.onServiceException(msg);
            }

            @Override
            public void onCompleted() {
                listener.onCompleted();
            }
        };
        DataRepository.getInstance().getDrugList(keywords).subscribe(baseHttpObserver);
        return baseHttpObserver.getDisposable();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值