2016-08-30 61 views
0

我有一個包含如下元素的xml視圖。是否有可能像微軟的HTML對象一樣給Spinner視圖分配一個名稱或類字段?Android XML爲視圖分配名稱和ID

  <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" /> 

原因是我需要通過創建一個字符串名稱和值的哈希映射到服務器的發佈請求。

我可以使用下面的forloop獲取Spinner值,但無法獲取發佈中使用的標籤,除非我使用相應的textViews創建列表,但這會挫敗使用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. 創建的0123並行列表就像你創建你的清單Spinner一樣。

  2. 創建一個自定義視圖,其中包括TextView和相應的Spinner。現在創建這些自定義視圖的單個列表。

+0

我已經與平行列表一起去了。這似乎是最簡單的選擇 謝謝 – user2202098

0

使用android:id="@+id/<insert_ID_here>"標籤在XML給每個一個唯一的ID,然後可以在代碼中引用,像這樣的紗廠:

 <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 
    } 
}