2013-06-04 17 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

これはアンドロイドの不具合に見えます。フレームワークコードをチェックすると、登録されたコールバックは決して使用されません。たぶんあなたはバグレポートを提出できます – nandeesh

答えて

41

これはしかし、あなたがAdapterView.OnItemClickListener()ないOnItemSelectedListenerを使用する必要があり、このquestion

の複製です。

次のコードスニペットを使用して、このコードをテストしました。アダプター用のものは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()); 
       } 
      });