我使用的是默认 AutoCompleteTextView ,它是在 layout.xml 中创建的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AutoCompleteTextView
android:id="@+id/autoComplete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_weight="1"
android:ems="10"
android:hint="title"
android:imeOptions="actionNext"
android:singleLine="true"/>
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:gravity="center"
android:inputType="numberDecimal"
android:imeOptions="actionDone"
android:singleLine="true"/>
</RelativeLayout>
比我初始化此 AutoCompleteTextView 并添加适配器。就我而言,我使用IME_ACTION_NEXT作为事件来设置 AutoCompleteTextView 的文本。
MainActivity.java :
public class MainActivity extends AppCompatActivity {
private ArrayAdapter<String> adapter_autocomplete_tags;
String[] tags = new String[]{"food", "restaurant", "drink"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
adapter_autocomplete_tags = new ArrayAdapter<String>(this,android.R.layout.select_dialog_item, tags);
final AutoCompleteTextView autocomplete = (AutoCompleteTextView) dialog_layout.findViewById(R.id.autoComplete);
autocomplete.setThreshold(1);
autocomplete.setAdapter(adapter_autocomplete_tags);
autocomplete.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_NEXT){
//here I want to set the AutoCompleteTextView´s Text to the most likely value
}
return false;
}
});
}
}
我的目标是,如果我键入“ f”并执行IME_ACTION_NEXT,则 AutoCompleteTextView 的文本将设置为“ food”(将文本设置为下拉菜单的第一个值)
我已经尝试使用:
autocomplete.performCompletion(); //does nothing
并且:
CharSequence s = autocomplete.getCompletionHint(); //returns null
autocomplete.setText(s);
我当然可以重新创建 AutoCompleteTextView 验证算法,但是我想使用它自己的验证算法。
编辑: 我决定重新创建AutoCompleteTextView算法。