自动完成文本视图在ListView标题

时间:2015-08-28 11:42:18

标签: android autocompletetextview

通过一些修改复制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:在下拉列表出现后立即执行其他一些操作 步骤进行:

  1. 开始输入我的AutoCompleteTextView内容 - 如上所述 在上面,只输入一个符号,出现下拉列表
  2. 触摸其他区域(不是下拉列表) - 列表 消失
  3. 再次单击AutocompleteTextView的输入字段并继续 输入 - 可以键入一个符号,显示下拉列表
  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();
    }
    

    结果:查看行为保持不变

    我迷路了。

0 个答案:

没有答案