“上的自动完成文本视图”@&引用;字符型Android
我有一个社交消息应用程序,我正在创建一个用户名字符串列表,希望edittext在键入消息并键入“@”时显示用户列表“上的自动完成文本视图”@&引用;字符型Android,android,autocomplete,android-edittext,autocompletetextview,social,Android,Autocomplete,Android Edittext,Autocompletetextview,Social,我有一个社交消息应用程序,我正在创建一个用户名字符串列表,希望edittext在键入消息并键入“@”时显示用户列表 如何执行此操作?您可以添加一个TextWatcher并动态更改自动完成文本视图的适配器。仅更改数组并调用notifyDataSetChanged()似乎不起作用 autoCompleteView.addTextChangedListener(new TextWatcher() { @Override public void be
如何执行此操作?您可以添加一个
TextWatcher
并动态更改自动完成文本视图的适配器。仅更改数组并调用notifyDataSetChanged()
似乎不起作用
autoCompleteView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int occurrences = 0;
String enteredString = s.toString();
for (char c : enteredString.toCharArray()) {
if (c == '@') {
occurrences++;
}
}
if (occurrences == 1) {
String requiredString = enteredString.substring(0, enteredString.indexOf("@"));
email[0] = requiredString + "@gmail.com";
email[1] = requiredString + "@hotmail.com";
.
.
email[10] = requiredString + "@yahoo.com";
adapter = null;
adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_list_item_1, email);
autoCompleteView.showDropDown();
autoCompleteView.setThreshold(0);
autoCompleteView.setAdapter(adapter );
} else if (occurrences == 0) {
autoCompleteView.dismissDropDown();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
autoCompleteView.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
int=0;
字符串enteredString=s.toString();
for(字符c:enteredString.toCharArray()){
如果(c=='@'){
引用++;
}
}
如果(出现次数==1){
String requiredString=enteredString.substring(0,enteredString.indexOf(“@”);
电子邮件[0]=requiredString+“@gmail.com”;
电子邮件[1]=requiredString+“@hotmail.com”;
.
.
email[10]=requiredString+“@yahoo.com”;
适配器=空;
adapter=new ArrayAdapter(MyActivity.this,android.R.layout.simple\u list\u item\u 1,电子邮件);
autoCompleteView.showDropDown();
自动完成视图。设置阈值(0);
autoCompleteView.setAdapter(适配器);
}else if(出现次数==0){
autoCompleteView.dismissDropDown();
}
}
@凌驾
公共无效后文本已更改(可编辑){
}
});
这用于在输入“@”时显示域列表。您可以根据需要修改代码