2016-08-30 3 views
0

У меня есть представление xml, содержащее элементы, как показано ниже. Можно ли назначить имя или поле класса представлению Spinner, как это делают объекты HTML?Android XML присваивает имя и идентификатор представлениям

  <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Profession: " 
       android:id="@+id/labelProfession" 
       android:singleLine="true" /> 

      <Spinner 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:id="@+id/spinnerProfession" 
       android:visibility="gone" 
       android:layout_weight="0.5" 
       android:spinnerMode="dialog" /> 

Причина в том, что мне нужно сделать запрос на отправку на сервер, создав хеш-карту имен и значений строк.

Я могу получить значения Spinner, используя нижеприведенный прелюд, но не могу получить метку для использования при публикации. Если я не создаю список с соответствующими текстовыми элементами, но это приведет к поражению цели использования forloop.

HashMap<String, String> data = new HashMap<String, String>(); 
    data.put(ResponseDTO.TAG_ID, String.valueOf(mProfile.getmId())); 
    data.put(ResponseDTO.TAG_PASSWORD, sharedPref.getString(ResponseDTO.TAG_PASSWORD,"")); 

    for (int i=0; i<mSpinnerList.size(); i++) { 
     data.put(<<ValueOfCorrespondingTextView>>,mSpinnerList.get(i).getselection()) 
    } 

В идеале, счетчик счетчиков будет иметь свойство имени с ценной профессией. Как и текст в приведенном выше TextView

+0

Я не очень понимаю, что вы пытаетесь сделать. Не могли бы вы привести пример, показывая, что пользователь увидит на экране и расскажет, какие действия пользователь может предпринять и каковы результаты? –

ответ

1

Я могу думать о двух решений:

  1. Создать параллельный список TextView так же, как вы создаете свой список Spinner s.

  2. Создание пользовательского представления, которое включает как TextView, так и соответствующие Spinner. Теперь создайте единый список этих пользовательских представлений.

+0

Я пошел с параллельным списком. Кажется, это самый простой вариант Спасибо – user2202098

0

Используйте android:id="@+id/<insert_ID_here>" тег в XML, чтобы дать Спиннерс каждый уникальный идентификатор, который вы можете ссылаться в коде, например, так:

 <Spinner 
      android:id="@+id/spinner1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/spinnerProfession" 
      android:visibility="gone" 
      android:layout_weight="0.5" 
      android:spinnerMode="dialog" /> 

Затем в коде:

Spinner spinner1 = (Spinner)findViewById(R.id.spinner1); 
0

Используйте OnItemSelectedListener таким образом Вы получаете позицию адаптера вместо вручную, используя текст блесны согласно документации:

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
spinner.setOnItemSelectedListener(this); 

public class SpinnerActivity extends Activity implements OnItemSelectedListener  { 

    public void onItemSelected(AdapterView<?> parent, View view, 
     int pos, long id) { 
     // An item was selected. You can retrieve the selected item using 
     // parent.getItemAtPosition(pos) 
    } 

    public void onNothingSelected(AdapterView<?> parent) { 
    // Another interface callback 
    } 
} 
Смежные вопросы