Android XML为视图分配名称和ID

时间:2016-08-30 20:49:58

标签: android xml

我有一个包含如下元素的xml视图。是否可以像在HTML对象中一样为Spinner视图指定名称或类字段?

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

原因是我需要通过创建字符串名称和值的哈希映射来向服务器发出post请求。

我可以使用下面的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

中的文字一样

3 个答案:

答案 0 :(得分:1)

我可以想到两个解决方案:

  1. 创建TextView的并行列表,就像创建Spinner s列表一样。

  2. 创建包含TextView和相应Spinner的自定义视图。现在创建这些自定义视图的单个列表。

答案 1 :(得分:0)

使用xml中的android:id="@+id/<insert_ID_here>"标记为每个Spinners提供一个唯一的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);

答案 2 :(得分: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
    }
}