5

現在、アプリケーションにはたくさんのスピナーがあります。私はあまり考えていませんでしたが、各スピナーの最初のインデックスはN/A. 大したことではありませんが、もう少しきれいにしたいと思っていました。

を呼び出す代わりにsetSelection( index )、スピナーを何も選択しないように設定する方法があるかどうか知りたいと思っていました。

基本的に、スピナーにアイテムのリストを表示させたいのですが、クリックするまでは何も表示しません。また、上部に空白のインデックスを付けたくありません。

どうしようもない可能性が高いと思いますので、どなたかご存知の方がいらっしゃいましたら教えてください。

ありがとう。

4

4 に答える 4

9

最初の位置を空白にして、何も選択されていないように見えるようにすることをお勧めします。

于 2012-08-23T19:49:34.743 に答える
6

スピナーは選択状態でなければなりません。「選択なし」オプションをお勧めします

もう 1 つのオプションは、一番下のボタンを選択し、それを非表示に設定することです (最後のボタンを選択済みに設定した理由は、アプリに空白のチャンクがないようにするためです)。

case SPINNER_OPTION_FIRST:
    yourSpinnerLabel.setVisibility(View.VISIBLE);
    yourTextField.setVisibility(View.VISIBLE);
    break;        

// do this for all your other ones if you want

case SPINNER_OPTION_LAST:
    yourSpinnerLabel.setVisibility(View.GONE);
    yourTextField.setVisibility(View.GONE);

おそらく最も効率的ではないかもしれませんが、うまくいくので、それが役立つことを願っています(まだ新しいので、たるみを減らしてください)!

于 2012-08-23T19:34:09.243 に答える
-2

私は試した

// getSelectedItemPosition() returns -1 if there is nothing selected
spinner.setSelection(-1); 

しかし、失敗しました[スピナーがリストの最初の要素を設定していました]。

「何も選択されていない」ことを模倣するスピナー データに「空の位置」を追加しました。「空の位置」は「ドロップダウン」リストには表示されないことに注意してください。

ところで。C# については申し訳ありませんが、概念がはっきりと見えることを願っています。

カスタム アダプター:

class CustomAdapter<T> : ArrayAdapter<T> {
    public override int Count {
        get { return base.Count - 1; }
    }
}

初期スピナー:

var data = new List<string> { "elem 1", "elem 2", "" };
spinner.Adapter = new CustomAdapter<String>(this, Resource.Layout.SimpleSpinnerItem, data);
spinner.SetSelection(2);
于 2015-02-19T13:30:21.820 に答える