我有一个包含如下元素的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
中的文字一样答案 0 :(得分:1)
我可以想到两个解决方案:
创建TextView
的并行列表,就像创建Spinner
s列表一样。
创建包含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
}
}