ブログ

Android Spinner onItemSelectedが最初に実行される件

Androidのアプリを開発する際、一般的なパーツのスピナー。
これ、初回起動時にonItemSelectedが実行されちゃうんですね。
無限ループしちゃったので対処法を。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final Spinner spinner = (Spinner) view.findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, arrGroupName);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setSelection(spinnerPosition);
        // 初回動作の対応
        spinner.setFocusable(false);
        setSpinner(spinner);

    }

setFocusableにfalseを設定。

    private void setSpinner(final Spinner spinner) {
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                // 初回の動作
                if (spinner.isFocusable() == false) {
                    spinner.setFocusable(true);
                    return;
                }
                // 初回以降の動作
                // --- 処理 ---
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }

こんな感じ。
期待通りの動作となりました。

実装にあたって、こちらの記事を参考にしました。感謝感謝。
Spinner#onItemSelectedが起動時に一度実行されてしまう件の対策

株式会社woodsmallの小林でした。
https://woodsmall.co.jp/

スポンサードリンク

  • このエントリーをはてなブックマークに追加

関連記事

スポンサードリンク

 

30代半ばのオッサンが起業した話

プロフィール

kobayashi-profile
代表取締役CEO 小林 高志
1999年からシステムエンジニアとして、クライアントサーバのシステム構築、WEBシステムの開発、Androidアプリの企画・開発、iPhoneアプリの企画・マーケティング等に携わる。
2012年からカメラマンとして都内のスタジオに従事。
2012年、株式会社woodsmall創業。
2013年5月に代表取締役に就任。
自身の半生を綴った書籍を出版するのが、個人的な目標。
趣味は、カメラ・車・バイク・料理。

代表取締役の略歴はこちら

社長のブログについて

検索してもヒットしなかったアプリ開発に関する技術的な記事から、その時に思ったことなどを素直に書き綴っています。

スポンサードリンク

Facebook

twitter

対応エリア

株式会社woodsmallは、千葉県をはじめ関東エリア、関西エリアでのホームページ制作、アプリ開発(Android、iPhone)、システム開発、チラシ制作を承ります。

【千葉県エリア】
船橋市、市川市、習志野市、浦安市、鎌ヶ谷市、松戸市、柏市、成田市、佐倉市、千葉市中央区、千葉市花見川区、千葉市稲毛区、千葉市美浜区、千葉市若葉区、千葉市緑区、白石市などの千葉県エリア

【東京都エリア】
足立区、荒川区、板橋区、江戸川区、大田区、葛飾区、北区、江東区、品川区、渋谷区、新宿区、杉並区、墨田区、世田谷区、台東区、中央区、千代田区、豊島区、中野区、練馬区、文京区、港区、目黒区などの東京都エリア

【神奈川県エリア】
横浜市、川崎市、藤沢市、茅ヶ崎市、大和市、海老名市、座間市、綾瀬市、平塚市、寒川町、大磯町、二宮町などの神奈川県エリア

【埼玉県エリア】
さいたま市、川口市、蕨市、戸田市などの埼玉県エリア

【関東・関西エリア】
その他、茨城県、栃木県、群馬県の関東エリア、長野県、新潟県の甲信越エリア、大阪府の関西エリア、全国からのご依頼に対応させて頂きます。
(遠方の場合は電話やメール、LINE、Skypeでの打合せとなります。)

ページ上部へ戻る