【发布时间】:2015-08-21 04:55:30
【问题描述】:
我有一个社交消息应用程序,我正在创建一个包含用户名字符串列表的社交消息应用程序,并且希望 edittext 在键入消息并键入“@”时显示用户列表。
我该怎么做?
【问题讨论】:
标签: android autocomplete android-edittext autocompletetextview social
我有一个社交消息应用程序,我正在创建一个包含用户名字符串列表的社交消息应用程序,并且希望 edittext 在键入消息并键入“@”时显示用户列表。
我该怎么做?
【问题讨论】:
标签: android autocomplete android-edittext autocompletetextview social
您可以添加TextWatcher 并动态更改AutoCompleteTextView 的适配器。仅更改数组并调用 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) {
}
});
这是用于在输入 '@' 时显示域列表。您可以修改代码以满足您的需求。
【讨论】: