android - 如何在 android 中使用 2 spinner 进行 fpersonal orm?
问题描述
我想在我的应用程序中创建一个个人表单。用户应填写。我使用 2 个微调器(下拉按钮)来获取 2 个项目——marriage_state 和 sex_state。不幸的是,当我运行我的应用程序时,微调器不会向我显示任何内容。我能做些什么?我该如何解决?
我的xml代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<Spinner
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:id="@+id/marriage"
style="@style/Edittext_form"
android:prompt="@string/marriage"
android:entries="@array/marriage_state"
android:layout_marginRight="10dp"/>
<Spinner
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:id="@+id/sex"
style="@style/Edittext_form"
android:prompt="@string/sex"
android:entries="@array/sex_state"
android:layout_marginRight="10dp"/>
</LinearLayout>
我的字符串代码:
<string name="sex">جنسیت...</string>
<string-array name="sex_state">
<item>زن</item>
<item>مرد</item>
</string-array>
<string name="marriage">*وضعیت تاهل...</string>
<string-array name="marriage_state">
<item>مجرد</item>
<item>متاهل</item>
</string-array>
我的Java代码:
public class MainActivity extends AppCompatActivity {
private Spinner _sex, _marriage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
_sex = (Spinner) findViewById(R.id.sex);
_marriage = (Spinner) findViewById(R.id.marriage);
ArrayAdapter<String> sex_spinner_adapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,
R.array.marriage_state);
_sex.setAdapter(sex_spinner_adapter);
ArrayAdapter<String> marriage_spinner_adapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,
R.array.marriage_state);
_marriage.setAdapter(marriage_spinner_adapter);
_sex.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
sex = adapterView.getItemAtPosition(i).toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
_marriage.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
marriage = adapterView.getItemAtPosition(i).toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
解决方案
您应该创建如下所示的适配器。
ArrayAdapter<String> marriage_spinner_adapter = ArrayAdapter.createFromResource(this, R.array.marriage_state, R.layout.support_simple_spinner_dropdown_item);
//and then set adapter like below.
_marriage.setAdapter(marriage_spinner_adapter);
仅供参考:对于这两个适配器,您使用与 R.array.marriage_state 相同的数组。将它们更改为相应的数组。
推荐阅读
- reactjs - 如何在 reactjs 中将道具传递给另一个组件
- python - 在生成无限数据时,PyTorch 的 __len__ 应该是什么?
- java - 试图捕捉特定的 ConstraintViolationException
- sql - SQL UNION 运算符如何识别重复项
- javascript - 如何忽略网页上的“无法读取未定义的属性'用户名'”
- python - 使用 Python 在卡方检验中未获得预期结果
- reactjs - 如何在 vscode 中添加对 .mdx/markdown 反应文件类型的 emmet 支持
- javascript - 如何使用 JavaScript 计算器将“分数”添加到输入区域?
- apache-kafka-streams - 从基于日窗口的状态存储中获取非压缩键/值
- rest - TTeeGrid 不在运行时使用来自 REST 的数据显示数据