gpt4 book ai didi

android - 当我在输入一个完整的单词后按空格键时,AutoCompleteTextView 不显示下拉菜单

转载 作者:可可西里 更新时间:2023-11-01 19:03:30 25 4
gpt4 key购买 nike

我的主要 Activity 代码:

// here you put all your data.
String[] dataArray = { "Amit sharma Kumar", "Hisham Kumar Munner",
"Vineet John Chaturvedi", "Lucky Kumar Verma" };

ArrayList<String> alAutoCompleteList;
AutoCompleteTextView acTV;
ArrayAdapter<String> adapter1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// etAuto = (EditText) findViewById(R.id.etAuto);
acTV = (AutoCompleteTextView) findViewById(R.id.acTV);
// Arraylist
alAutoCompleteList = new ArrayList<String>();
adapter1 = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line, alAutoCompleteList);


acTV.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
if (acTV.enoughToFilter()) {
acTV.showDropDown();
acTV.bringToFront();
}
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
alAutoCompleteList.clear();
}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub

String acText = acTV.getText().toString().trim();

for (String item : dataArray) {

if (item.toLowerCase().contains(acText.toLowerCase())) {
alAutoCompleteList.add(item);
}
}


acTV.setThreshold(4);
acTV.setAdapter(adapter1);
acTV.showDropDown();

}
});

当我搜索“sharma”并在之后按一个空格时,建议就会消失。我希望这些建议留在那里。我已尝试做所有事情,但没有取得任何成功。有人可以帮忙吗?

编辑:有人可以在他们的模拟器上试试这段代码吗?只需在 xml 中添加一个 AutoCompleteTextView 并运行它。

最佳答案

首先,为什么要在 AutoCompleteTextView 上设置 TextWatcher 监听器?如果您这样做是为了自己过滤数据,则不应这样做(因为小部件默认情况下这样做并且您的代码不正确)。

When i search "sharma" and press a space after that. suggestions goes off. I want those suggestions to stay there.

发生这种情况是因为适配器和它附带的默认 Filter 实现,AutoCompleteTextView 在后台使用的元素来提供您在下拉列表。 ArrayAdapter 的默认行为是您所看到的,您可以在 this answer 中找到解释。 .解决方案是使用过滤器实现您自己的适配器,该过滤器将在整个适配器的行数据中搜索过滤器字符串。我从 SDK 中获取了 ArrayAdapter 类的代码并进行了轻微调整,以便在单词后插入空格时过滤不会中断。你可以找到类 here因为代码太大而无法发布。只需将类复制到您的项目中并将其用作普通的 ArrayAdapter:

FilterWithSpaceAdapter<String> adapter1;
//...
adapter1 = new FilterWithSpaceAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line, dataArray);

关于android - 当我在输入一个完整的单词后按空格键时,AutoCompleteTextView 不显示下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com