通过一些修改复制this问题,因为我有新信息
所以,从一开始: 我已经使用ArrayAdapter填充了AutoCompleteTextView:
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) header.findViewById(R.id.auto_complete_text_view);
autoCompleteTextView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, arrayList));
header - 膨胀视图:我的AutoCompleteTextView位于ListView标题
中XML:
<AutoCompleteTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/auto_complete_text_view"
android:hint="@string/hint"
android:completionThreshold="1"
android:dropDownWidth="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:scrollHorizontally="true"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:layout_marginLeft="@dimen/external_margin"
android:layout_marginRight="@dimen/external_margin"
android:layout_marginBottom="@dimen/external_margin"
/>
应用程序启动,显示下拉列表,但我无法输入超过1个符号(或超过阈值参数中指定的符号)。如果我从列表中选择了一些选项,我就不能删除超过1个符号。
@pskink首先,感谢您的关注。我一直试图考虑你的解决方案,但考虑到下面的事实我没有得到应用它的方式。
我做了一些研究,这是我发现的:
===============================================
想法#1 :对于AutoCompleteTextView(~450个条目),arrayList太大了
解决方案:从原始列表中获取子列表
autoCompleteTextView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, arrayList.subList(1, 10)));
结果:查看行为保持不变
解决方案:向适配器转移另一个数组
String[] array = {“one”, “two”, “three”, “four”}
autoCompleteTextView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, array));
结果:查看行为保持不变
===============================================
想法#2:让我们尝试创建测试活动并将AutoCompleteTextView放在那里
解决方案:
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.auto_complete_text_view);
autoCompleteTextView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, arrayList));
结果:适用于初始代码和~450个arrayList条目
因为它应该工作,我已经意识到这一点在ListView标题
中===============================================
创意#3:谷歌一些与ListView标题和AutoCompleteTextView相关的解决方案
Android AutoCompleteTextView as ListView header
android:descendantFocusability="afterDescendants"
结果:查看行为保持不变
Focusable EditText inside ListView
结果:我认为这不适合我的问题,所以没有尝试。至少还没有
===============================================
创意#4:在下拉列表出现后立即执行其他一些操作 步骤进行:
重复上述步骤,我可以输入一些大的东西。
===============================================
当我在AutoCompleteTextView中输入内容时,最后一个:在Logcat中发现了很多关注消息:
getTextBeforeCursor on inactive InputConnection
找到了一些相关问题,例如:
getExtractedText on inactive InputConnection warning on android
解决方案:
@Override
protected void onPause() {
// hide the keyboard in order to avoid getTextBeforeCursor on inactive InputConnection
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
super.onPause();
}
结果:查看行为保持不变
我迷路了。