- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的主要 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/
当用户点击 ACTV 并找到他正在搜索的内容时,他再次选择 ACTV 的唯一原因是搜索其他内容。我正在寻找一种方法,当用户在 ACTV 中进行搜索并且搜索文本位于 ACTV 字段中(建议菜单已关闭)时
当我单击 AutoCompleteTextView 的建议时,我希望光标移动到下一个可用的 EditBox 或 AutoCompleteTextView。 我在下面附上了我的布局和我的应用图像文件。在
我有一个 AppCompatAutoCompleteTextView,其 anchor 比 AppCompatAutoCompleteTextView 更靠下。这是设计使然,无法更改。当我在下拉菜单上
我正在使用 3 个 AutocompleteTextViews 来建议来自数据库的条目。我对 AutocompleteTextView 进行了子类化处理,以便在单击时将默认文本设置为 null,并在移
我正在使用 AutoCompleteTextView 创建下拉菜单。如何删除列表顶部和底部的默认边距? 重新创建: List dropdownItems
我正在尝试让 TextWatcher 与 AutoCompleteTextView 一起工作,但遇到了一些问题。我面临的问题是,当我开始输入文本时,如果数据输入的长度只有一个字符,我在 AutoCom
即使我没有在下拉列表项布局中设置边距,下拉列表也带有左右边距。我希望它与 autocompletetextview 的宽度相匹配。我怎样才能做到这一点? 这是我的 AutoCompleteTextVi
我的应用实现了一个 HashMap,这样当在 AutoCompleteTextView editText 中键入 key 时,并且用户单击下拉项,该值将显示在textView上。 唯一的问题是,单击的
这里是 Android 菜鸟,之前是 iOS、.Net、C 和 Fortran。 如果我有一个带有 1000 多个字符串的 ArrayAdapter,我如何修改 AutoCompleteTextVie
嗨,我刚刚开始学习 android Studio,我想要一个 AutoCompletetextView 和一个按钮,如果用户输入未在数组列表中列出,则添加用户输入。我的 AutoCompleteTex
我正在开发一个使用 AutoCompleteTextView 的应用程序,但遇到了一些问题。请在下面查找问题的详细信息。 数据中存在以下值: 1)曼尼什·洛根·杰恩 2)M.J.(洛根·费恩) 3)洛
我正在尝试根据另一个 View (微调器)中选择的选项来更改 AutoCompleteTextView 的建议列表。不幸的是,这个 TextView 的适配器似乎没有从另一个 View 的 setOn
我有这个布局: 使用这种风格: @color/text_input_layout_outlined_box_stroke @color/green_2 我试图在自动
我正在尝试使用 AutoCompleteTextView 进行过滤,但过滤器出现问题。它返回 ArrayList 中的所有项目,而不是过滤后的项目。下面是我的代码: Filter nameFilte
我想制作一个 AutoCompleteTextview ,它将从内部存储加载以前保存的建议。我成功地将字符串从内部存储加载到字符串数组(我使用日志记录来检查......)。 然后,当我将字符串数组加载
我有一个 AutoCompleteTextView,我想在它上面设置一个过滤器,我遇到的问题是当我去输入一些东西时它只会让我在文本字段中输入 1 个字符。如果我从代码中删除 textView.setF
我有两个自动完成 TextView 例如,如果任何人选择自动完成 TextView “HUB ID”位置#3,则另一个自动完成 TextView “HUBName”必须强制位于位置 3即希望它们都处于
您好 Android 开发人员, 我有一个关于自动完成 TextView 的问题。我在平板电脑上开发,我很好地定制了它。当我在平板电脑上运行它时,它看起来像这样: 这实际上是我想要的 - 所有可见的东
我正在处理一项要求,其中使用自动完成 TextView 来获取匹配的Localities。用户必须输入几个字符,然后从服务器返回与这些字符匹配的 Localities 列表。自动完成 TextView
使用 Bootstrap 的 Web 应用程序,有这样的输入区域。 在 Android 中有没有像这样实现 EditText 的库? 最佳答案 是的,完成的泡泡在Android中被称为“筹码”。工作解
我是一名优秀的程序员,十分优秀!