0

スピナーが2つあります。そのうちの1つでアイテムを選択すると、選択したアイテム(現在は上部に表示されています)が赤に変わります。スピナーは相互に排他的な意味で相互に関連付けられています。一方で何かを選択すると、もう一方は最初の(「タイトル」)選択に戻り、白に変わります。

これはすべて、onItemSelectedリスナーを介して行われます。

    sectionSpin.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View arg1,
                int position, long arg3) {
            System.out.println("SECTION SPIN # " + position);               

            issueSpin.setSelection(0);                                      
            ((TextView) issueSpin.getChildAt(0)).setTextColor(Color.parseColor("#FFFFFF"));  
            ((TextView) arg1).setTextColor(Color.parseColor("#E3170D"));
....

「イシュースピナー」の場合はその逆です。私の問題は、あるスピナーから別のスピナーに移動し、一番上のアイテムを選択した場合、onItemSelectedListenerが登録されないことです(printlnステートメント(または、その欠如は、これを証明します)。 selectedはすでに選択されているので何も起こりません。

必要なのは、SwingのButtonGroupに相当するものです。この場合、一見異なる2つのメニューを作成できますが、一度に1つしか選択できないように、すべての子を1つの「相互に排他的な」ボタングループに追加します。このようなものを私に与えるAndroidのメカニズムはありますか、または誰かが回避策で私を助けることができますか?

4

1 に答える 1

1

がすでに選択されているアイテムのコールバックSpinnerをトリガーすることはできません。onItemSelected()

Spinner私が仕事に就けなかったクラスを上書きする例があります。このサイトには、すでに選択されているトリガーアイテムAbsSpinnerを作成するために一部の関数をオーバーライドする例もありますSpinnerが、残念ながら、その例はAPIの変更により機能しなくなりました。

したがって、これを行うための最良の方法は、、(スピンダウン用)、およびの組み合わせを使用して、TextViewすでにButtonに送信したものAlertDialogと同じものを保持することだと思います。ArrayAdapterSpinner

TextView/レイアウトのカスタム作業と、リストアイテムの色/テキストのプロパティを変更できるようにするためのカスタム作業を行う必要がありButtonますが、少なくともDialogInterface.onItemClickedListener()常にトリガーされます。

于 2013-03-25T20:43:46.027 に答える