Как найти позицию элемента в автозаполнении, заполненном массивом
У меня есть массив (array1 с States
) и AutoCompleteTextview
, в котором я заполняю его массивом. Когда я выбираю значение из AutoCompleteTextview
, я выбираю state
из раскрывающегося списка AutoCompleteTextView
Я хочу получить позицию элемента из массива, который я выбрал.
Я пробовал OnClickEvent
AutocompelteTextView
.
STATE.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
String selection = (String) parent.getItemAtPosition(position);
String num = selection;
}
});
Это ss дает мне значение, которое я выбрал из раскрывающегося списка, но я хочу получить position of the value
в массиве1. Для примера у меня есть массив размером 4, например array1 = {A, B, C, D}, и если я выберу B, он должен вернуть мне позицию B в массиве i.e 2.
Надеюсь, я дал понять. Спасибо заранее.
Ответы
Ответ 1
Используйте переменную position в onItemClick
.
STATE.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
String selection = (String) parent.getItemAtPosition(position);
int pos = -1;
for (int i = 0; i < yourarray.length; i++) {
if (yourarray[i].equals(selection)) {
pos = i;
break;
}
}
System.out.println("Position " + pos); //check it now in Logcat
}
});
Ответ 2
Использовать список вместо массива. Внесите onItemClickListener для AutoCompleteTextView, а затем используйте indexOf в вашем списке, чтобы найти индекс выбранного элемента.
actvCity.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
int index = cityNames.indexOf(actvCity.getText().toString());
// Do Whatever you want to do ;)
}
});
Ответ 3
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
TextView txtvw=(TextView) view;
String str=txtvw.getText().toString();
int index = contactNames.indexOf(str);
}
Ответ 4
Item.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//// id contains item if from database
ItemNoSelected = id;
}
});
id из базы данных, мы можем использовать этот