我有一个OnItemSelectedListenerfor my Spinner,但是当所选项目与前一个项目相同时,它不会被调用.显然,OnClickListener这不是一个选项Spinner.每次用户点击某个项目时我都需要抓住.任何的想法?
也许这Spinner是ActionBar扰乱正常行为的事实?
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.tracklist_menu, menu);
Spinner spinner = (Spinner) menu.findItem(R.id.option_ordering_spinner)
.getActionView();
spinner.setAdapter(mSpinnerAdapter);
spinner.setSelection(PrefsHelper.getOrderingSpinnerPos(prefs));
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String str = "selected";
System.out.println(str);
if (optionMenuInitialized) {
switch (position) {
case 0:
// rdm
getActivity()
.sendBroadcast(
new Intent(
MyIntentAction.DO_RESHUFFLE_PLAYLIST));
smp.setCurrentTracklistCursorPos(-1);
trackAdapter.notifyDataSetChanged();
break;
case 1:
// artist
getActivity()
.sendBroadcast(
new Intent(
MyIntentAction.DO_ORDER_PLAYLIST_BY_ARTIST)); …Run Code Online (Sandbox Code Playgroud) android listener spinner actionbarsherlock android-actionbar
我正在尝试将Spinner自定义为多选.我已经成功地使它可以多选,但是当重新选择一个项时,微调器内部的视图不会更新.
当一个项目重新被选中时Spinner,getView()我的SpinnerAdapter被调用产生了View我想要它的东西,但是View不知怎的,它不会被显示出来.我已经完成了调试器中的所有操作,并且在选择不同的项目或重新选择相同的项目时,我找不到任何差异.我已经浏览了所有的代码Spinner AbsSpinner,AdapterView而且我找不到可能导致这种情况的原因.
微调器有6个项目:选择1-6.微调器起源于未选中的所有项目. 选择选项1,2和4.微调器内的视图正确显示"选择1,选择2,选择4".

选择4未被选中(就Spinner而言,重选).从列表中正确取消选中选项4,但微调器内的视图不会更新. 它仍然显示"选择1,选择2,选择4".单步执行调试器,我的SpinnerAdapter上的getView()会被调用.出于某种原因,View实际上并未显示.

选择2未被选中(这不是对Spinner的"重新选择").这里的一切都按预期运作.列表项和Spinner内的视图都会更新.

public class MultiSelectSpinner extends Spinner {
private OnItemSelectedListener listener;
public MultiSelectSpinner(Context context) {
super( context );
}
public MultiSelectSpinner(Context context, AttributeSet attrs) {
super( context, attrs );
}
public MultiSelectSpinner(Context context, AttributeSet attrs, int defStyle) {
super( context, attrs, defStyle );
}
@Override
public void setSelection( int position ) { …Run Code Online (Sandbox Code Playgroud)