2016-09-27 55 views
0
String[] idArray = {"1","2","3","4"}; 

String[] nameArray = {"Abraham","Abhi","John","Joseph"}; 


final ArrayAdapter<String> adapterTextView = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,nameArray); 

etItemName.setAdapter(adapterTextView); 

etItemName.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

     String id = idArray[position]; 

    } 
}); 

這是我的代碼。在這一點,當我鍵入「喬」,約翰Jospeh是填充在AutoCompleteTextView當我選擇約翰我得到String id爲。但實際上我需要的是。那麼我怎樣才能得到而不是?如何從AutoCompleteTextView獲取適配器項目的位置?

+0

如果你把一個斷點onItemClick內,寫入後 「喬」,你會看到((ListView控件)適配器視圖).getAdapter()。getCount將()= 2,有2項在適配器內部,「約翰· 「和」約瑟夫「。 @ n9153的解決方案可以爲你工作。 – Lev

+0

@Lev我知道。因爲它的加載字符串以「JO」開頭。我想獲得從nameArray的適配器數組中選擇哪個項目的實際位置。 –

回答

2

這不是完美的解決方案,但你可以把它作爲最後的選擇:

,當你通過nameArray傳遞選定字符串只是循環找到它的位置:

int position=-1; 
    for(int i=0;i<nameArray.length;i++){ 
    if(selectedItem.equalsIgnoreCase(nameArray[i])){ 
     position=i; 
    } 
    } 
1

@Shaheer Palollat​​hil n9153的建議可行。我只是根據你的代碼改變他的答案。

AutoCompleteTextView t; 
    t.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      int pos = -1; 
      for(int i = 0; i < nameArray.length; i++){ 
       if(((AutoCompleteTextView)view).getText().toString().equals(nameArray[position])) 
        pos = position; 
        break; 
      } 
      String id = idArray[pos]; // should be your desired number 
     } 
    }); 
相關問題