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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

3976閲覧

Android:ListViewで画面遷移してもCheckboxの状態を保持する方法

choonesu

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/07/09 12:12

###前提・実現したいこと

A画面(トップページ)
B画面(CheckedTextViewを使用したリストビュー)
があります。

①A→Bに遷移してリストを選択(チェックボックス)
②ボタンを押下するとB→Aに遷移。選択した項目内容が表示
③変更ボタンをクリックしてA→Bに遷移すると②の内容が初期値でチェックされている

という実装を行いたいのですが、①②はすでに実装できているのですが、③のやり方がわかりません。
ちなみにDBは使用していないです。

アダプターは独自にクラスを作成し、getView()の中で再利用とViewHolderを利用してます。

ご教授お願いします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

AからBにチェックを付ける行を識別情報(IDや名前等)のリストを渡す必要があります。
Bはもらった情報をもとにチェックを付けるかどうかを判定します。

投稿2016/07/09 14:46

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

choonesu

2016/07/09 19:47

Androidはアクティビティがバックグラウドにいったときに自動的にonSavedInstanceメソッドが呼ばれますよね? そこで現在チェックされているリスト項目番号をArrayList<Integer>に詰めて、再びonCreateされたときにrestoreしてsetItemCheckedメソッドでその項目をtrue指定すればいいのかなと思ったんですけど、onCreateの仮引数に入ってくるのが常にnullなんですけどこの原因ってなにが考えられますか? ちなみにonSavedInstanceメソッドではちゃんとoutStateされてます。
sekitaka_1214

2016/07/09 21:12

overrideしたonSavedInstanceが意図したタイミングで呼ばれているか確認してみてはどうでしょうか。
choonesu

2016/07/10 02:29

onSavedInstanceState()はアクティビティを閉じたときに自動で呼ばれています。そこで値はoutstate.putIntegerArray()できています。 でも次にアクティビティを起動したときにonCreateの仮引数savedInstanceStateに上記でoutstateしたインスタンスが返ってきません。
yona

2016/07/10 04:13

そもそも、そのメソッドはActivityの中でデータを保持する話ですよね? Aで表示するデータはBで編集されるならAの中で保存、復元しても無駄だと思います。 データベースを使わないなら各画面遷移でチェックしている項目を識別するデータを渡すしか無いと思いますよ。
choonesu

2016/07/10 14:17

そうではなくて、Bの中で保存、復元するって話です。 Bでたとえばリスト1、2という項目にチェックをいれるとします。 決定ボタンを押下してAに遷移する際にonSavedInstanceState()が呼ばれるので そこで値を保持します。そして次にまたAからBに遷移してきたときに onCreateの仮引数に保持したデータが入ってくるというイメージです。 ですがさきほどライフサイクルについて詳しく調べたところ、どうやら2度目はonCreateが呼ばれないみたいなので、復元データを記述するメソッドが間違っていたのかもしれません。
yona

2016/07/10 14:31

どのような画面遷移を行っているのでしょうか? ①A→B:AからstartActivityまたはstartActivityForResult ②B→A:Bでfinishを呼ぶ。 ③A→B:AからstartActivityまたはstartActivityForResult 画面遷移は上の通りですよね? 通常の設定ではBは2回インスタンス化されるはずなので互いに別のインスタンスになると思います。そのため、保存、復元するという事自体できないと思います。 だから、Aからデータを渡す必要があるとコメントしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問