2016-09-20 13 views
9

私は(以下のコード)を含む単純なアプリを持っています。私はOnItemClickListenerOnItemSelectedListenerを定義しました。ドロップダウンの候補から個々の項目をクリックすると、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"); 
      } 
     }); 

    } 
} 
+0

エミュレータでハードウェアキーボードを使用しようとしましたか? –

+0

@GeetChoubey私は実際のブルートゥースキーボードを使用し、このアプリを配備しているAndroid携帯に接続しました – Rakesh

答えて

0

あなたはこのためonFocusChangeListenerを使用する必要があります。 onItemSelectedListenerは、選択可能なビュー(listviewのビューのようなもの)のためのものです。

関連する問題