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

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