以下是一个使用AutoCompleteTextView实现的示例代码,其中列表中不显示以输入的字符串开头的单词,只显示包含两个单词的字符串。
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private AutoCompleteTextView autoCompleteTextView;
private String[] words = {"apple", "banana", "cherry", "orange", "pear", "pineapple"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoCompleteTextView = findViewById(R.id.autoCompleteTextView);
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, words);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(2); // 设置输入最小长度为2
autoCompleteTextView.setOnItemClickListener((parent, view, position, id) -> {
String selectedWord = (String) parent.getItemAtPosition(position);
autoCompleteTextView.setText(selectedWord); // 设置AutoCompleteTextView的文本为选中的单词
});
autoCompleteTextView.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) {
}
@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
ArrayAdapter filteredAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_dropdown_item_1line);
for (String word : words) {
if (word.contains(" ") && word.startsWith(input)) {
filteredAdapter.add(word);
}
}
autoCompleteTextView.setAdapter(filteredAdapter);
}
});
}
}
在布局文件activity_main.xml
中,添加一个AutoCompleteTextView组件:
在这个示例中,我们首先创建了一个包含一些单词的字符串数组。然后,我们创建了一个ArrayAdapter来适配AutoCompleteTextView,并将其设置为AutoCompleteTextView的适配器。我们还设置了输入的最小长度为2,以便在用户至少输入两个字符后才开始显示自动完成的下拉列表。
接下来,我们添加了一个TextWatcher,以在输入文本发生变化时实时过滤并更新AutoCompleteTextView的下拉列表。在afterTextChanged方法中,我们遍历单词数组,并将包含两个单词并以输入的字符串开头的单词添加到新的适配器中。然后,我们将这个适配器设置为AutoCompleteTextView的适配器,以更新下拉列表。
当用户从下拉列表中选择一个单词时,我们使用setOnItemClickListener监听器将选择的单词设置为AutoCompleteTextView的文本。
请注意,此示例中的布局文件仅包含一个AutoCompleteTextView组件,您可以根据自己的需求进行修改和扩展。