androidでスピナーのデータを一時保存したいのですが、onRestoreInstanceStateで値を取り出した際に1件のデータしか入っていません。
LogでRowData#getcodeやRowData#getnameで値が入っていることは確認できますがセットしても何も表示されません。
解決策としてはRowDataにforのデータを上書きでなく追加できる変更したいのと、それをスピナーにセットできるようにしたいです。
解決策が分かればご教授をお願いします。
または、参考になるサイト等ありましたら教えていただきたいです。
MainActivity.java
public static class RowData extends ArrayList<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; } } RowData RowData; (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++) { RowData = new RowData(cursor3.getString(0),cursor3.getString(1)); 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); @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable("RowData", RowData); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); RowData = savedInstanceState.getParcelable("RowData"); Spinner spinner = (Spinner) findViewById(R.id.n_naiyo); spinner.setAdapter(RowData); }
あなたの回答
tips
プレビュー