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();
}
自定义autoCompleteTextView
最新推荐文章于 2021-05-26 00:57:50 发布