作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗯,我是 Android 编程的新手,我对微调器选择器感到有点迷茫......我发现了一些相同的问题,但没有一个符合我的目的:
objectSpinner = (Spinner) findViewById(R.id.objectSpinner);
objectSpinner.setOnItemSelectedListener(MainActivity.this);
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long position2) {
Object object = adapterView.getAdapter().getItem(position);
Log.d("Spinner", "itemSelected: " + position + " - Object: " + object);
menuLayout = new View(this);
if (object instanceof Filter) {
Filter mFilter = (Filter) object;
setAdapterFilter(mFilter);
}
}
这是我将所有数据设置到微调器的方法(微调器的数据最初加载到 onCreate 方法中,但它可以根据用户从微调器中选择的项目而改变,因此 onItemSelected 被一遍又一遍地调用再次……)
public void setAdapterFilter(Filter filter) {
frameLayout.removeAllViews();
if (filter != null) {
menuLayout = inflater.inflate(R.layout.filter, null);
TextView typeTxt = (TextView) menuLayout
.findViewById(R.id.type_txt);
typeTxt.setText(filter.getType());
frameLayout.addView(menuLayout, 0);
}
ArrayAdapter<Filter> filterAdapter = new ArrayAdapter<Filter>(this,
android.R.layout.simple_spinner_item, filterArrayList);
objectSpinner.setAdapter(filterAdapter);
}
主要问题是:如何改变 Spinner 的行为?我只需要在单击(触摸)时触发 onItemSelected 事件,而不是在设置适配器和加载数据时触发。
最佳答案
OnItemSelected
始终在 adapter
首次设置时调用。 AFAIK,没有办法阻止这种情况的发生。你可以做的是在你的 Activity
中设置一个 boolean
标志,并在它第一次运行后在你的监听器中将其设置为 true 并且不要在这是错误的。
使用 onFocusChangeListener可以让您监听 Spinner
以获得焦点,并在它获得焦点时做或不做某事。但我仍然认为简单地使用一个标志是最简单的
关于android - Spinner onItemSelected 一遍又一遍地保持调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422251/
我是一名优秀的程序员,十分优秀!