2013-06-04 7 views
17

da versuche ich Code für Autorisierungsaktivitäten zu schreiben. Wenn ich einen Eintrag in InputEmail schreibe, erwarte ich, dass mein InputPasword automatisch abgelegt wird, wenn ein entsprechender Datensatz existiert. OnItemSelectedListener schien jedoch nicht zu funktionieren. Wenn ich einen Gegenstand wähle passiert nichts. Log geht nicht zu. Ich würde gerne wissen, ob ich einen Fehler gemacht habe oder falsch gehe. Dieseautocompletetextview setonitemselectedlistener funktioniert nicht

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

das scheint ein Fehler auf Android zu sein. Wenn der Rahmencode überprüft wird, wird der registrierte Rückruf nie verwendet. Vielleicht können Sie einen Fehlerbericht einreichen – nandeesh

Antwort

41

ist ein Duplikat dieser question

Allerdings müssen Sie AdapterView.OnItemClickListener() nicht OnItemSelectedListener verwenden.

Ich habe es mit dem folgenden Code-Snippet erfolgreich getestet. Guthaben an Vogella für den Adapter Zeug.

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(); 
     } 
    }); 

Nehmen Sie einfach den Adapter von AutoCompleteTextView und die Position verwenden.

0

Verwenden Sie setOnItemClickListener, und verwenden Sie nicht setOnItemSelectedListener. Verwenden Sie auch Ihr benutzerdefiniertes Adapterobjekt, um die ausgewählten Werte abzurufen.

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()); 
       } 
      }); 
Verwandte Themen