package com.letv.watchball.view;
import android.content.Context;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import com.letv.watchball.R;
import com.letv.watchball.adapter.MailListAdapter;
public class EmailAutoCompleteTextView extends AutoCompleteTextView {
private String[] email_suffixs = null;
public EmailAutoCompleteTextView(Context context) {
super(context);
init();
}
public EmailAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public EmailAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
email_suffixs = getResources().getStringArray(R.array.email_suffix);
addTextChangedListener(mTextWatcher);
setOnTouchListener(onTouchListener);
}
private TextWatcher mTextWatcher = new TextWatcher() {
boolean isnull = true;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length() > 1){
char c = s.charAt(s.length() - 1);
if(c == '@'){
String[] mails = new String[email_suffixs.length];
String prefix = EmailAutoCompleteTextView.this.getText().toString();
for(int i = 0; i < email_suffixs.length; i++){
mails[i] = prefix + email_suffixs[i];
}
MailListAdapter mMailListAdapter = new MailListAdapter(getContext(), mails);
setAdapter(mMailListAdapter);
}else{
// setAdapter(null);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_dropdown_item_1line,new String[]{});
EmailAutoCompleteTextView.this.setAdapter(adapter);
// dismissDropDown();
}
}else{
// setAdapter(null);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_dropdown_item_1line,new String[]{});
EmailAutoCompleteTextView.this.setAdapter(adapter);
// dismissDropDown();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if(TextUtils.isEmpty(s)){
if(!isnull){
setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
isnull = true;
}
}else{
if(isnull){
setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.search_del_button_selecter), null);
isnull = false;
}
}
}
};
private OnTouchListener onTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_UP:
int curX = (int)event.getX();
if(curX > v.getWidth() - 60 && !TextUtils.isEmpty(getText())){
setText("");
int cacheInputType = getInputType();// backup the input type
setInputType(InputType.TYPE_NULL);// disable soft input
onTouchEvent(event);// call native handler
setInputType(cacheInputType);// restore input type
return true;// consume touch even
}
break;
}
return false;
}
};
}