自定义 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();
}
您好,我正在尝试创建一个 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();
}