2016-09-20 4 views
9

(아래 코드) 만 포함 된 간단한 앱이 있습니다. 나는 OnItemClickListenerOnItemSelectedListener을 정의했다. 드롭 다운 추천에서 개별 항목을 클릭하면 onItemClick 이벤트가 트리거됩니다. 그러나 블루투스 키보드의 경우 화살표 키를 사용하여 주어진 항목으로 이동해도 onItemSelected 이벤트가 발생하지 않는 것 같습니다 (이 이벤트에는 로그가 표시되지 않음).Android AutoCompleteTextView onItemSelectedListener가 블루투스 키보드로 트리거되지 않았습니다.

onItemSelected 이벤트는 어떤 이벤트를 트리거합니까? 나는 드롭 다운 항목 중 하나에 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의 뷰와 같은)를위한 것입니다.

관련 문제