2012-06-25 7 views
7

を選択している場合、クリックdoes't作業上のスピナーアイテムIは作品onItemSelected interationでスピナーをしましたが、API仕様は述べていますどのように:私は、この制限を削除する必要がアンドロイド:それはすでに

This callback is invoked only when the newly selected position is different from the 
previously selected position or if there was no selected item. 

と私は、ユーザーが同じ要素を選択した場合でもコールバックが呼び出されることを望みます。どうやってするか?
誰も同じことをしましたか?スピナーのためのOnItemClickListener例外をスローし、あなたが選択した/同じ要素上のユーザー]をクリックした場合は通知されませんItemSelectedListenerを使用します設定

このことについて任意のアイデアはかなりのだろう。..

+0

setOnItemClickListenerで試してみてください –

+0

同じものを探しています.... – Sri

+0

[現在選択されているアイテムを再度選択した場合、Android Spinnerでイベントを取得するにはどうすればいいですか?](http://stackoverflow.com/質問/ 5335306/how-can-i-get-an-ev現在選択されているアイテムの選択肢であるアンドロイドスピナーの – stefan222

答えて

1

i want that the callback is invoked also if the user select the same element. How to do that?

この制限を克服する唯一の方法は、Spinner項目にCustomAdapterを使用し、アダプタの各ビューに対してsetOnClickListenerを実装することです。

+0

arun..answerに感謝します。 – Hulk

1

私はこの同じ問題を抱え、ちょっと見渡しました。この機能を使用するには複数の方法があるかもしれませんがスピナーを延長してくれました。あなたは私が見つけたものに似た何かをすることができるhere

デフォルトのAndroidスピナーを使用する代わりに、それを拡張し、コールバックメソッドをトリガーするコードを追加します。

私はドキュメントに記載されているようにスピナーにsetOnItemClickListenerを使用すると、例外をスローすることを追加したい:

カスタムスピナーをしなければならない。この場合
A spinner does not support item click events. Calling this method will raise an exception. 
0

:この

public class MySpinner extends Spinner{ 

OnItemSelectedListener listener; 

public MySpinner(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

@Override 
public void setSelection(int position) 
{ 
    super.setSelection(position); 

    if (position == getSelectedItemPosition()) 
    { 
     listener.onItemSelected(null, null, position, 0); 
    }  
} 

public void setOnItemSelectedListener(OnItemSelectedListener listener) 
{ 
    this.listener = listener; 
} 
} 
をお試しください
関連する問題