2016-09-20 14 views
9

Tôi có một ứng dụng đơn giản chỉ chứa AutoCompleteTextView (mã bên dưới). Tôi đã xác định được OnItemClickListenerOnItemSelectedListener. Nhấp vào các mục riêng lẻ từ các đề xuất thả xuống sẽ kích hoạt sự kiện onItemClick. Tuy nhiên, với bàn phím bluetooth, sử dụng các phím mũi tên để điều hướng đến một mục nhất định dường như không kích hoạt sự kiện onItemSelected (các nhật ký không được nhìn thấy cho sự kiện này).Android AutoCompleteTextView onItemSelectedListener không được kích hoạt bằng bàn phím bluetooth

Điều gì gây nên sự kiện onItemSelected này? Tôi đã được ấn tượng rằng một số highlight trên một trong các mục thả xuống, nhưng điều đó dường như không đúng.

Nếu OnItemSelectedListener không phải là trình xử lý sự kiện chính xác cho mục được đánh dấu, có bất kỳ sự kiện nào đáp ứng yêu cầu này không?

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

bạn đã cố gắng sử dụng bàn phím phần cứng trên trình giả lập chưa? –

+0

@GeetChoubey Tôi đã sử dụng bàn phím bluetooth thực tế và kết nối nó với điện thoại Android, trên đó tôi đã triển khai ứng dụng này – Rakesh

Trả lời

0

Bạn nên sử dụng onFocusChangeListener cho việc này. On onItemSelectedListener là cho các khung nhìn có thể chọn (giống như các khung nhìn trong listview).

Các vấn đề liên quan