java - 在 OnClickListener 中填充并执行 Spinner
问题描述
我在使用微调器时遇到问题。由于某些原因,我需要填充微调器 ( ),然后在 EditText onClickListener 中setAdapter()
显示它 ( )。performClick()
我的 Spinner 已正确初始化,因为我没有看到任何错误。只是他不会打开。以下代码将不起作用:
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<String> statusStrings = new ArrayList<>();
statusStrings.add("PROCESSING");
statusStrings.add("LATE");
statusStrings.add("DONE");
statusStrings.add("REJECT");
ArrayAdapter<String> adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_spinner_dropdown_item, statusStrings); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.performClick();
}
});
但是,相同的代码将在 onClick 事件之外工作。此外,我通过放置spinner.performClick();
一个新线程解决了我的问题,如下所示:
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<String> statusStrings = new ArrayList<>();
statusStrings.add("PROCESSING");
statusStrings.add("LATE");
statusStrings.add("DONE");
statusStrings.add("REJECT");
ArrayAdapter<String> adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_spinner_dropdown_item, statusStrings); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
final Handler h = new Handler();
new Thread(new Runnable() {
public void run() {
h.postDelayed(new Runnable() {
public void run() {
spinner.performClick();
}
}, 100);
}
}).start();
}
});
但是这个解决方案并不能让我满意,因为我不明白为什么我需要把它放在一个新的线程中。
有没有想过这个?谢谢
解决方案
推荐阅读
- xsd - xml 模式:检查列表是否升序
- sql - 以与现有 id 字段相同的模式创建随机值
- javascript - 用两个组件反应 handleChange 错误
- c - 是否在有符号的固定宽度整数上定义和可移植按位运算?
- python - 在熊猫中添加一个带有当前年份的新列
- javascript - How can i overwrite data on HTML Datatables?
- python-3.x - 查找与嵌套字典中的值匹配的所有键,并以这些值作为键创建一个新字典
- firebase - 在 Xamarin.iOS 中为 Google 移动广告支持添加包会导致链接错误
- javascript - 从数组中获取一系列现有成员的最快方法是什么?
- php - 如何在 Symfony 表单中验证上传文件的名称