2016-09-27 56 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 
     } 
    }); 
相关问题