不写文本即可显示AutocompleteTextView中的所有项目

63

我有一个AutocompleteTextView,它可以正常工作。当我输入单词时,它会显示相关结果,但我想在AutocompleteTextView中不输入任何单词的情况下显示所有项。我该怎么做?


尝试使用此链接代码,可能会对您有所帮助...http://stackoverflow.com/questions/15224027/custom-autocompletevview-like-facebook-comments-field-in-android/15247212#15247212 - Umesh Lakhani
这不是我想要的实际解决方案。无论如何,谢谢。 - androidcodehunter
14个回答

0

这里提供一种使用onclicklistener的方法,因为我发现在尝试滚动时,onTouch有点烦人。mOccupation是相关的AutocompleteTextView。

    mOccupation=(AutoCompleteTextView) findViewById(R.id.actv_occupation);
    ArrayAdapter<String> occupationAdapter=new ArrayAdapter<String> 
    (NewClientActivity.this,
            android.R.layout.simple_list_item_1,
            getResources().getStringArray(R.array.occupation_array));
    mOccupation.setAdapter(occupationAdapter);
    mOccupation.setKeyListener(null);
    mOccupation.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //mOccupation.setText(null);
            ((AutoCompleteTextView) view).showDropDown();
            return;
        }
    });

我成功地将其全部放入了一个Textinputlayout中,具体的XML规格如下:
<android.support.design.widget.TextInputLayout
    android:id="@+id/lo_occupation"
    android:layout_marginTop="10dp"
    android:layout_gravity="center_horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="occupation"
        android:focusableInTouchMode="false"<--this is the important part
        android:id="@+id/actv_occupation"
        android:ems="10"
        android:completionThreshold="0"<--this too
        />
</android.support.design.widget.TextInputLayout>

0

它帮助了我:

private AutoCompleteTextView autoCompleteTextViewRFID; 

...
    autoCompleteTextViewRFID = binding.choiceFieldRFID;
    List<String> rfidArray = databaseManager.readCowsRFID();
    ArrayAdapter<String> rfidAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_dropdown_item_1line, rfidArray);
    autoCompleteTextViewRFID.setThreshold(1);
    autoCompleteTextViewRFID.setAdapter(rfidAdapter);

...

autoCompleteTextViewTypeRange.setOnTouchListener((v, event) -> {
        autoCompleteTextViewTypeRange.showDropDown();
        return true;
    });

XML:

            <AutoCompleteTextView
            android:id="@+id/typeRange"
            android:gravity="center"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:layout_width="match_parent"
            android:layout_height="40dp" />

-1
我有一个很好的解决方案。它很简单。只需下拉并从选项中选择即可。
确保将以下两行添加到XML中。
android:completionThreshold="0" android:focusableInTouchMode="false"
XML
<com.google.android.material.textfield.TextInputLayout
    android:layout_marginTop="10dp"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.appcompat.widget.AppCompatAutoCompleteTextView
        android:id="@+id/select_area"
        android:layout_width="match_parent"
        android:layout_height="52dp"
        android:padding="10dp"
        android:textSize="15sp"
        android:singleLine="true"
        android:drawableEnd="@drawable/ic_arrow_down"
        android:completionThreshold="0"
        android:focusableInTouchMode="false"
        android:hint="Select an Area"
        android:inputType="text"
        android:maxLines="1" />

</com.google.android.material.textfield.TextInputLayout>

JAVA

area_autocomplete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        area.showDropDown();
    }
});

这将显示下拉菜单,但用户不能在其中输入。这个解决方案更好 https://dev59.com/FmUp5IYBdhLWcg3wEEXd#60489021 - Haris
如在 Abdulmalek Dery 的解决方案(https://dev59.com/FmUp5IYBdhLWcg3wEEXd#60489021)中(如果更改为点击监听器),它会在每次点击时隐藏和显示列表。我可以输入字母。 - CoolMind
同意@Haris的看法,它隐藏了光标,但你仍然可以输入字母。这是因为android:completionThreshold="0" android:focusableInTouchMode="false" - CoolMind

-1

你可以简单地使用这一行代码

autoCompleteTextView.setThreshold(100);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接