Android, как выбрать идентификатор автозаполнения текста внутри переопределенной функции onitemclick

У меня есть три поля autoCompleteTextView как home , work , other .

Итак, в домашнем поле автозаполнения я получаю данные с сервера и выбираю один элемент, и этот элемент я сохранил в строке home_latlong. Точно так же я должен получить значение из другой работы автозаполнения, которую я сохраняю в другой строке с именем home_latlong. В приведенном ниже коде показана переопределенная функция onItemClick, где я буду хранить home_latlong или work_latlong. `

ontemClick(AdapterView<?> adapterView, View view,
        int position, long id) {
        System.out.println("POSITION ="+position);
        for (int i = 0; i < latlong.size(); i++) {
            if(i==position){
                home_latlong=latlong.get(i);
                System.out.println("ARRAY"+latlong.get(i));
            }
        }
}`

Итак, проблема в том, что я не могу различать, когда я буду хранить home_latlong и когда хранить work_latlong. Пробовал с id autocompletetextview, но в этой функции не помогло.


person Naveen    schedule 05.06.2014    source источник
comment
у вас есть параметр adapterView, вы можете его использовать   -  person pskink    schedule 05.06.2014


Ответы (2)


Я решил это, используя анонимный внутренний класс,

actv1 = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
actv1 .setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View v, int position,
                long id) {
            // TODO Auto-generated method stub
            for (int i = 0; i < latlong.size(); i++) {
                if (i == position) {
                    home_latlong = latlong.get(i);
                    System.out.println("ARRAY" + latlong.get(i));
                }

            }
        }

    });

Точно так же для work_latlong у меня был еще один анонимный внутренний класс, поэтому я могу получить, какое представление автозаполнения я щелкнул.

person Naveen    schedule 06.06.2014
comment
Другое решение описано здесь. - person yonojoy; 04.09.2015

Ознакомьтесь с документацией для AdapterView.OnItemClickListener:

public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)

Параметры

  • родитель: AdapterView, в котором произошел щелчок.
  • представление: представление в AdapterView, которое было нажато (это будет представление, предоставленное адаптером)

Вам нужно использовать параметр first (AdapterView), чтобы идентифицировать AutocompleteTextView.

person matiash    schedule 05.06.2014
comment
С этим родительским параметром, как определить, какое из трех представлений автозаполнения? - person Naveen; 05.06.2014
comment
@Naveen Вы можете использовать if (parent.getId() == R.id.theIdOfEachView) ... - person matiash; 05.06.2014
comment
это не сработало. Я пробовал, если (adapterView.getId() == R.id.autoCompleteTextView1)... Несмотря на то, что я нажал на autocompleteTextView1, но он вообще не входит в цикл. - person Naveen; 06.06.2014