是的,我知道AdapterView.OnItemClickListener
回调中有位置参数,但此参数返回过滤(显示)列表的位置。
例如,我有_countriesEvisitor
arraylist,我希望通过查看这样的位置来选择国家/地区对象:
public AdapterView.OnItemClickListener setOnCitizenshipAutocompleteItemClickListener(){
return (adapterView, view, position, id) -> {
CountryEvisitor citizenship=new CountryEvisitor();
citizenship=_countriesEvisitor.get(position);
_visit.setCitizenship(citizenship);
};
}
_countriesEvisitor
有250个项目,当我开始输入例如Hrvatska
时,我只获得一个项目,它的位置为0(因为它是第一个且只显示列表中的一个)尽管它是在_countriesEvisitor
列表中的第247个列表,其中包含自动完成适配器列表。
如何获得所选国家/地区?
答案 0 :(得分:-1)
使用如下代码。
public AdapterView.OnItemClickListener setOnCitizenshipAutocompleteItemClickListener(){
return (adapterView, view, position, id) -> {
CountryEvisitor citizenship= (CountryEvisitor ) view.getAdapter().getItem(position);
citizenship=_citizenship.getcitizenship();
_visit.setCitizenship(citizenship);
};}
答案 1 :(得分:-2)
保留原始项目的第二个列表,并搜索与您的搜索结果匹配的列表并获取该项目的索引
...
_countriesEvisitor.get(position);
int result = -1;
for(int x = 0; x < originalList.size; x++) {
if (/* some check here */) {
result = x;
break;
}
}
if (result != -1) {
// check if result is not -1 and use the index
}