私は(以下のコード)を含む単純なアプリを持っています。私はOnItemClickListener
とOnItemSelectedListener
を定義しました。ドロップダウンの候補から個々の項目をクリックすると、onItemClick
イベントがトリガーされます。ただし、Bluetoothキーボードの場合、矢印キーを使用して特定のアイテムに移動すると、onItemSelected
イベントがトリガーされないようです(ログはこのイベントでは表示されません)。Android AutoCompleteTextView onItemSelectedListenerがBluetoothキーボードで起動していません
このonItemSelected
イベントはどのようなイベントを引き起こしますか?私はドロップダウンアイテムの1つにhighlight
があるとの印象を受けましたが、そうではないようです。
OnItemSelectedListener
が強調表示されたアイテムの正しいイベントリスナーでない場合、この要件を満たすものはありますか?
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends Activity {
String[] options = {"a1", "a2", "a3", "b1", "b2", "b3", "b4", "b5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// An adapter object
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, options);
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(1);
// Set the listeners
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("OnItemClick", "[AutoCompleteTextView] Item clicked");
}
});
autoCompleteTextView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("onItemSelected", "[AutoCompleteTextView] Item selected");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d("onNothingSelected", "[AutoCompleteTextView] Nothing here");
}
});
}
}
エミュレータでハードウェアキーボードを使用しようとしましたか? –
@GeetChoubey私は実際のブルートゥースキーボードを使用し、このアプリを配備しているAndroid携帯に接続しました – Rakesh