質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.21%

androidでスピナーを一時保存して取り出したい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 938

aaaaaaaaaaaaaa

score 77

リンク内容
を参考にしてonSaveInstanceStateでスピナーごと保存し、 onRestoreInstanceState内で取り出したスピナーのデータをそのままアダプターにセットしたいのですが、上手くできません。
実装したい事はonclick内で作成したドロップダウンが画面回転した際に消えてしまい、消えないようにしたいです。
何がいけないのかわかる方ご教授または添削をお願いします。

 AllContactParcelable.java

public class AllContactParcelable implements Parcelable, SpinnerAdapter {

             private ArrayList<MainActivity.RowData[]> contactList;

              public int describeContents() {
             return 0;
          }

             public void writeToParcel(Parcel out, int flags) {
              //out.writeTypedList(contactList);
         }
               public static final Creator<AllContactParcelable> CREATOR
                = new Creator<AllContactParcelable>() {
               public AllContactParcelable createFromParcel(Parcel in) {
                      return new AllContactParcelable(in);
                 }
             public AllContactParcelable[] newArray(int size) {
                     return new AllContactParcelable[size];
                 }
          };
             private AllContactParcelable(Parcel in) {
            //contactList = (ArrayList<MainActivity.RowData[]>) (ArrayList<MainActivity.RowData[]>) in.createTypedArrayList(MainActivity.RowData.CREATOR);
         }
             public AllContactParcelable(ArrayAdapter<MainActivity.RowData> contactList) {
               //this.contactList = contactList;
     }
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        return null;
    }
    @Override
    public void registerDataSetObserver(DataSetObserver observer) {
    }
    @Override
    public void unregisterDataSetObserver(DataSetObserver observer) {
    }
    @Override
    public int getCount() {
        return 0;
    }
    @Override
    public Object getItem(int position) {
        return null;
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }
    @Override
    public boolean hasStableIds() {
        return false;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return null;
    }
    @Override
    public int getItemViewType(int position) {
        return 0;
    }
    @Override
    public int getViewTypeCount() {
        return 0;
    }
    @Override
    public boolean isEmpty() {
        return false;
    }
}


MainActivity.java 一部抜粋

public static class RowData implements Parcelable {
        private String name;
        private String code;
        public int describeContents() {
            return 0;
        }

        public void writeToParcel(Parcel out, int flags) {
            out.writeString(name);
            out.writeString(code);
        }

        public static final Parcelable.Creator<RowData> CREATOR
                = new Parcelable.Creator<RowData>() {
            public RowData createFromParcel(Parcel in) {
                return new RowData(in);
            }

            public RowData[] newArray(int size) {
                return new RowData[size];
            }
        };
        private RowData(Parcel in) {
            name = in.readString();
            code = in.readString();
        }
        // コンストラクタ・セッタ・ゲッタ省略
        RowData(String name, String code) {
            this.TOKCO = name;
            this.TOKNA = code;
        }
        public String getname() {
            return name;
        }
        public String getcode() {
            return code;
        }
        @Override
        public String toString() {
            return TOKNA;
        }
    }
AllContactParcelable AllContactParcelable; 


:
:
:
:
:
:
(onclick内でドロップダウン作成)
            db = helper.getReadableDatabase();
            // 列名の定義
            String[] columns = {"NAME", "CODE", "NAK"};

            // 得意先データの取得
            Cursor cursor = db.query(DB_TABLE, columns, null, null, null, null, "CODE");
            final RowData[] dataArray = new RowData[cursor.getCount()];
            // 取得したデータをテーブル明細部に設定
            for (int i = 0; cursor.moveToNext(); i++) {
                    dataArray[i] = new RowData(cursor3.getString(0),cursor3.getString(0) + "\n" + cursor3.getString(1));
            }
            ArrayAdapter<RowData> adapter = new ArrayAdapter<>(this, R.layout.list, dataArray);
            Spinner spinner = (Spinner) findViewById(R.id.n_naiyo);
            spinner3.setAdapter(adapter);
            AllContactParcelable = new AllContactParcelable(adapter);


 @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
             outState.putParcelable("contact", AllContactParcelable);
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
               AllContactParcelable = savedInstanceState.getParcelable("contact");
        Spinner spinner = (Spinner) findViewById(R.id.n_naiyo);
              spinner.setAdapter(AllContactParcelable);
    }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る