自定义 AutocompleteTextView 的列表

To customize the list of an AutocompleteTextView

您好,我正在尝试创建一个 AutoCompleteTextView。此 AutoCompleteTextView 的结果列表应放在注释文本下方。谁能帮我实现这个目标?

尝试这样的事情:

<AutoCompleteTextView
    android:id="@+id/txtPurpose"
    android:layout_width="370dp"
    android:layout_height="50dp"
    android:dropDownHeight="300dp"
    android:paddingStart="10dp"
    android:paddingEnd="10dp"/>

并使用 android.R.layout.simple_dropdown_item_1line, 作为您要填写的列表的设计

我希望这能帮助你解决你想要的问题,如果它不起作用,请告诉我。

从问题来看,您似乎需要将结果显示在单独的列表中。 因此,假设您的 EditText 被称为 searchText 并假设您的 ListAdapter 被称为 searchAdapter,然后将 addTextChangedListener 设置为 EditText.

EditText searchText = (EditText) findViewById(R.id.search);
searchText.addTextChangedListener(new TextWatcher() {
       public void afterTextChanged(Editable s) {

       }

       public void beforeTextChanged(CharSequence s, int start, int count, int after) {

       }

       public void onTextChanged(CharSequence s, int start, int before, int count) {
           searchAdapter.filter(s.toString());
       }
});

然后在ListAdapter中添加过滤函数,使用输入的关键字从数据集中进行过滤。

private List<String> titles, titlesCopy;
//keep a copy of your dataset
public void filter(String charText) {
   charText = charText.toLowerCase(Locale.getDefault());
   titles.clear();
   if (charText.length() == 0) {
      titles.addAll(titlesCopy); //no text entered, so add all results
   } else {
      for (String filtered : titlesCopy) { //check with keyword from the copy data set
          if (filtered.toLowerCase(Locale.getDefault()).contains(charText)) {
                titles.add(filtered);
          }
      }
   }
   notifyDataSetChanged();
}