2013-06-04 38 views
17

那裏我試圖編寫授權活動的代碼。 當我在inputEmail中放入一些條目時,我希望如果存在相應的記錄,我的inputPasword將自動歸檔。然而onItemSelectedListener似乎不工作。當我選擇項目什麼都沒有發生。日誌不會變成。 我想知道如果我犯了一些錯誤,或者我錯誤地採取行動。autocompletetextview setonitemselectedlistener not working

AutoCompleteTextView inputEmail; 
inputEmail = (AutoCompleteTextView) findViewById(R.id.loginEmail); 
inputEmail.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       Set<String> keys = prefs.getAll().keySet(); 
       emails.clear(); 

       if (keys.size() != 0) { 
        emails.addAll(keys); 
       } else 
        emails.add(""); 

       inputEmail.setAdapter(adapter); 

       email = inputEmail.getText().toString(); 

      } 

     }); 
inputEmail.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       // TODO Auto-generated method stub 
       email = inputEmail.getText().toString(); 
       password = prefs.getString(email, ""); 
       Log.d(email + " "+password, "email+password"); 
       if (password.length() > 1) { 
        inputPassword.setText(password); 
       } 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 

     }); 
+0

這看起來是一個Android上的錯誤。在檢查框架代碼時,從不使用註冊的回調。也許你可以提交一個錯誤報告 – nandeesh

回答

41

這也是本question

重複然而,你需要使用AdapterView.OnItemClickListener()沒有OnItemSelectedListener。

我使用下面的代碼片段成功地測試了它。請撥打Vogella以獲取適配器資料。

AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autocomplete_textview); 

    String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
      "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
      "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", 
      "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
      "Android", "iPhone", "WindowsMobile" }; 

    ArrayList<String> list = new ArrayList<String>(); 
    for (int i = 0; i < values.length; ++i) { 
     list.add(values[i]); 
    } 
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, list); 
    actv.setAdapter(adapter); 

    actv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      Toast.makeText(MainActivity.this, 
        adapter.getItem(position).toString(), 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
2
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String selectedItem=autoCompleteTextView.getAdapter().getItem(position).toString(); 
      Toast.makeText(getApplicationContext(),selectedItem , Toast.LENGTH_SHORT).show(); 
     } 
    }); 

剛剛獲得AutoCompleteTextView的適配器,並使用位置。

0

使用setOnItemClickListener並且不要使用setOnItemSelectedListener。還可以使用您的自定義適配器對象來獲取選定的值。

prodNameAutoCompTxt.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 


       @Override 
       public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
        //Don't use this method 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> adapterView) { 
        System.out.println("Nothing selected"); 
       } 
      }); 
      prodNameAutoCompTxt.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
        //Use this method 
        Product prodObj=(Product) prodAutoAdapter.getItem(i); 
        new UomSynch().execute(prodObj.getProdID()); 
       } 
      });