android – AutoCompleteTextView没有完成括号内的单词
作者:互联网
我已经实现了AutoCompleteTextView,如下所示:
MainActivity.java
...
public static String[] myData=new String[]{"Africa (AF)","America (AFM)","Apple (AMP)"};
text=(AutoCompleteTextView)v.findViewById(R.id.first_state);
ArrayAdapter adapter = new ArrayAdapter(getActivity(),R.layout.autocompletetextview_row,R.id.textViewItem,myData);
text.setAdapter(adapter);
text.setThreshold(1);
text.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
selected_station = (String)parent.getItemAtPosition(position);
//TODO Do something with the selected text
}
});
在AutoCompleteTextView的布局中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:padding="10dp" >
<TextView
android:id="@+id/textViewItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="Item name here..."
android:textColor="#000000"
android:textSize="20sp" />
</RelativeLayout>
当我输入类似“af ..”时,它显示非洲(AF)选择但不是美国(AFM).
数据只是一个示例数据.这不是我使用AutoCompleteTextView只有3个项目.
编辑:当我删除括号时,它正常工作.但我需要保留括号以供进一步使用.
解决方法:
ArrayAdapter过滤器的默认实现是搜索单词的开头(用空格分隔),我的意思是它使用startsWith.您需要实现一个ArrayFilter,它使用contains和startsWith.
您的问题将通过以下步骤解决:
>从here下载ArrayAdapter.java文件
>将该文件添加到项目中(例如,您可以通过将文件重命名为CustomArrayAdapter.java来重构).
>在文件中,您将找到一个私有类ArrayFilter.然后,添加valueText.contains(prefixString)和words [k] .contains(prefixString),如下所示:
if (valueText.startsWith(prefixString) || valueText.contains(prefixString)) {
newValues.add(value);
} else {
final String[] words = valueText.split(" ");
final int wordCount = words.length;
// Start at index 0, in case valueText starts with space(s)
for (int k = 0; k < wordCount; k++) {
if (words[k].startsWith(prefixString) || words[k].contains(prefixString)) {
newValues.add(value);
break;
}
}
}
>将自定义的ArrayAdapter用于AutoCompleteTextView
这是结果截图:
希望这可以帮助!
标签:autocompletetextview,android,android-arrayadapter 来源: https://codeday.me/bug/20190923/1815271.html