2011-08-02 21 views
1

私はonCLickListenerのようなスピナーとのユーザーのやり取りをキャッチしたいと思います。 「AdapterViewでonClickListener()を呼び出さないでください」というエラーになります。スピナーが作成するビューでonClickListener()を設定するカスタムのスピナーでコンストラクターをオーバーライドする必要があることが推奨されました。Spinnerの表示のためにonClickListener()を設定するには?

はしようとしたこと:

public class MySpinner extends Spinner { 

public static final String TAG = "MyApp"; 

public MySpinner(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.temp_systems, android.R.layout.simple_spinner_item); 
    TextView spinner_text = (TextView) findViewById(android.R.id.text1); 
    OnClickListener spinnerOnClickListener = new OnClickListener() { 

     public void onClick(View v) { 
      Log.d(TAG, "Should do something!"); 
     } 

    }; 

    spinner_text.setOnClickListener(spinnerOnClickListener); 

    setAdapter(adapter); 
} 

} 

が、私は、私はこのアイテムを膨らませるために失敗にクラッシュを取得したレイアウトでこれを含めるしようとします。

ここで明確にするために、onItemClickListenerは、スピンナーが折りたたまれているときではなく、ドロップダウンメニューの項目をクリックすると発生します。最初のスピナーをクリックした後、ドロップダウンメニューを作成する前に傍受する必要があります。

+0

エラー/クラッシュログを表示できますか? – Manuel

+0

私はスピナーの例を見てみるべきだと思います。さらに、あなたのレイアウトとビューの設定方法/インフレータの追加情報を投稿してください。 – PJL

答えて

1

OverridesetOnItemClickListenerを意味し、それをコンストラクタで呼び出します。だからあなたのmySpinnerクラスに追加する必要があります:[それはITEMクリックリスナーで呼び出され気づき、それはまた、あなたの問題の一部である可能性があります]

@Override 
    public void setOnItemClickListener(
      android.widget.AdapterView.OnItemClickListener l) { 
     super.setOnItemClickListener(l); 
//... do action here that you want to happen when item in spinner is clicked 
    } 

知らんそれはあなたの問題を解決しますが、私はそれが役に立てば幸い場合。がんばろう。

も、おそらく

public void onItemSelected(AdapterView<?> parent, 
     View view, int pos, long id) { 
    //do stuff 
    } 
1

なぜあなたはSpinnnerを拡張する必要がされているか、なぜあなたはTextViewの上でクリックリスナーを割り当てるわからないを使用する価値があるかもしれません。スピンナーに選択リスナーを割り当てる必要があります。スピナー例に従って検討:

1)

2 Spinnerコントロールとレイアウトを有する)アクティビティ

3の「スピナー」を有する部材)setContentView介してレイアウトを膨らませると、次に割り当てますfindViewById

4を介してスピナー部材)スピナーのためのアダプタを設定し、あなたが私をOnTouchListener使用することができます選択リスナー

+0

良いコメントですが、カットされたものは10倍も価値があります。 – Buffalo

0

を割り当てるために、あなたのスピナーにsetOnItemSelectedListenerを呼び出しますOnClickListenerのnsteadは、Spinnerでは利用できません。

関連する問題