4

他の人は機能しないという問題を抱えています、私はそれが機能しているという問題を抱えています(そしてそれはすべきではありません)

保存されたデータモデルがあり、GUI のアクティビティに再度ロードする必要があります。いくつかのスピナー値があります。

データは、共通のアクセス可能なクラスである参照ホルダーに配置されます。

アクティビティの onCreate は、編集モードかどうかを次のようにチェックします。

editMode = getIntent().getBooleanExtra(EDIT_MODE_KEY, false);

xml から UI 要素を読み込み、値の選択と入力を開始します。編集モードと作成モードでは、データ モデルを持つ値を選択する必要があります。実行時 ( onResume() の後) にはいくつかのワークフローがあります。スピナー 1 で何かが選択されているか、スピナー 2 アダプターのコンテンツを更新する必要があるかなどです。

プレーンでは機能しなかった.setSelection(positiontoSelect);ため、遅延投稿を追加しましたが、現在は機能しています。

私の問題は次のとおりです。一時的に選択リスナーを削除し、選択を呼び出して、リスナーを追加し直します。

変更する必要があるコードは次のとおりです。

          if (editedTimezonePosition > -1) {                        
                final int positiontoSelect = editedTimezonePosition;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        OnItemSelectedListener listener = spSelectTimezone.getOnItemSelectedListener();
                        spSelectTimezone.setOnItemSelectedListener(null);
                        spSelectTimezone.setSelection(positiontoSelect);
                        spSelectTimezone.setOnItemSelectedListener(listener);                   
                    }
                }, 250);            
            }

リスナーを null に設定しても効果はありません。リスナー メソッドへのコールバックを取得しています。

修正する方法があれば、共有してください。

4

1 に答える 1