android:spinner [Android]为Spinner填充数据后设置默认值的问题
Spinner的基本可以参考这里:AndroidGUI03:Spinner的常用技巧
update:
项目中有一个界面是要用到spinner的选择然后自动reload ListView的,一开始在onCreate时人为加上listView.setAdapter()来加载数据,现在发现没必要,我spinner 的onItemSelected方法中也有listView.setAdapter() (使用此来出现加载),调试时发现,数据加载了两次,原来在初始时,如果你有spinner,系统会自动调用onItemSelected(并且以第一项为初始),导致与我onCreate的load 重复。
update:
想实现一个在之前的listview 的item选定之后跳到View2之后,跳回来的时候listview还是跳之前的spinner对应的item的数据。一开始只是在onItemSelected中把textView的字改掉,然后实现加载时把加载的position也改掉,很快发现这只是一直伪做法,spinner中的选择项显示肯定是没变化的。现在发现android有一个spinner.setSelection(n,true)来选择选定项,使用这个即可。
之前发现适配完数据后会默认选中第一个,并且这个默认选中第一个的操作并不是马上执行的,而是一段时候后再执行,并触发OnItemSelectedListener事件。可是如果你 使用spinner.setSelection(2,true);之后,系统在初始时就不会执行onItemSelected了。
updata:
发现:
初始时系统调不调用onItemSelected和你setOnItemSelectedListener(this); setSelection(spinnerItem, true);的顺序有关:
//调用onItemSelected
spinner.setOnItemSelectedListener(this);
spinner.setSelection(spinnerItem, true);
两句调换则不会调用onItemSelected