Как найти позицию элемента в автозаполнении, заполненном массивом - программирование
Подтвердить что ты не робот

Как найти позицию элемента в автозаполнении, заполненном массивом

У меня есть массив (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.

Надеюсь, я дал понять. Спасибо заранее.

4b9b3361

Ответ 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 из базы данных, мы можем использовать этот